我正在做一个spider来抓取任天堂的游戏列表,我已经用postman和python requests库检查了请求格式,得到了我需要的结果,但是,当我用scrapy创建请求时,我得到了400个错误。
下面是蜘蛛:
class NintendoSpider(scrapy.Spider):
name = "nintendo"
def start_requests(self):
url = 'https://u3b6gr4ua3-dsn.algolia.net/1/indexes/*/queries'
headers = {}
headers['x-algolia-api-key'] = 'a29c6927638bfd8cee23993e51e721c9'
headers['x-algolia-application-id'] = 'U3B6GR4UA3'
formdata = {
"requests":[
{
"indexName":"store_game_en_us",
"params":'&hitsPerPage=40&maxValuesPerFacet=20&page=0'
}
]
}
yield scrapy.Request( url, method='POST', headers=headers, body=json.dumps(formdata), callback=self.parse)
def parse(self, response):
print(response)
1条答案
按热度按时间1tu0hz3e1#
我试过你的代码,它工作得很好。这意味着你被限速/禁止。
再试一次,看看
parse
方法中的response.json()
。如果它工作,这是一个临时禁令。从现在开始,您需要减慢抓取速度或使用代理。
使用
DOWNLOAD_DELAY
和AUTOTHROTTLE_ENABLED
设置。请参阅有关此主题的文档。