Python Scrapy:如果请求失败(如404500),如何请求另一个替代请求?
我对刮痧有问题。Python Scrapy:如果请求失败(如404500),如何请求另一个替代请求?,python,web-scraping,scrapy,http-status-code-404,Python,Web Scraping,Scrapy,Http Status Code 404,我对刮痧有问题。 如果请求失败(如404500),如何请求另一个替代请求?例如,两个链接可以获取价格信息,一个失败,自动请求另一个。只需设置handle\u httpstatus\u list=[404500]并在parse方法中检查状态码。下面是一个例子: from scrapy.http import Request from scrapy.spider import BaseSpider class MySpider(BaseSpider): handle_httpstatus
如果请求失败(如404500),如何请求另一个替代请求?例如,两个链接可以获取价格信息,一个失败,自动请求另一个。只需设置
handle\u httpstatus\u list=[404500]
并在parse
方法中检查状态码。下面是一个例子:
from scrapy.http import Request
from scrapy.spider import BaseSpider
class MySpider(BaseSpider):
handle_httpstatus_list = [404, 500]
name = "my_crawler"
start_urls = ["http://github.com/illegal_username"]
def parse(self, response):
if response.status in self.handle_httpstatus_list:
return Request(url="https://github.com/kennethreitz/", callback=self.after_404)
def after_404(self, response):
print response.url
# parse the page and extract items
另见:
errback=self.error\u处理程序
其中error_handler是该函数中的一个函数(与回调函数类似),请检查错误代码并发出替代请求
请参阅scrapy文档中的errback:
您可以编写一个中间件。谢谢您,正如您所说,我已经自己解决了这个问题。这不包括全部故障,例如DNS-仅当Web服务器响应时