在坏的需求后,刮痧停止

2024-05-31 23:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道它是否相关,但我使用内联请求库。在

如果我向一个站点的API发出请求,它返回bad request(400),爬虫程序就会停止。我怎样才能让它继续?在

在下面的例子中,我检查了一本书的售价,这本书的ISBN是'0046594062994',因为他们没有这本书,所以返回一个错误的请求(您可以尝试输入下面的URL)。这对他们的书很管用。在

~~~~~~~~

@EDIT:我发现这是内联请求的已知问题。在

或不能忽略其回调响应继续执行。这可以通过使用标志句柄\u httpstatus \u all来克服。请参阅httperror中间件文档。“

文件:https://doc.scrapy.org/en/latest/topics/spider-middleware.html#scrapy.spidermiddlewares.httperror.HttpErrorMiddleware

我试着照医生说的做,但没成功。 我做错什么了?检查添加到示例代码的行。在

示例代码:

    response2 = yield scrapy.Request("https://api.bookscouter.com/v3/prices/sell/0046594062994.json")
    response2.meta['handle_httpstatus_all'] = True
    jsonresponse = loads(response2.body)

Tags: 代码https程序api示例站点requestall
1条回答
网友
1楼 · 发布于 2024-05-31 23:31:57

您需要使用下面的命令将meta传递给请求本身

response2 = yield scrapy.Request("https://api.bookscouter.com/v3/prices/sell/0‌​046594062994.json", meta = {'handle_httpstatus_all' : True})


jsonresponse = loads(response2.body)

现在您正在设置handle_httpstatus_all每一个类似301302重定向也将交给您。在

所以你应该检查一下

^{pr2}$

相关问题 更多 >