scrapy 400个错误,当使用标头和有效负载进行零碎的发布请求时

lrpiutwd  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在做一个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)
1tu0hz3e

1tu0hz3e1#

我试过你的代码,它工作得很好。这意味着你被限速/禁止。
再试一次,看看parse方法中的response.json()。如果它工作,这是一个临时禁令。
从现在开始,您需要减慢抓取速度或使用代理。
使用DOWNLOAD_DELAYAUTOTHROTTLE_ENABLED设置。请参阅有关此主题的文档。

相关问题