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”,如

errback=self.error\u处理程序
其中error_handler是该函数中的一个函数(与回调函数类似),请检查错误代码并发出替代请求

请参阅scrapy文档中的errback:

您可以编写一个中间件。谢谢您,正如您所说,我已经自己解决了这个问题。这不包括全部故障,例如DNS-仅当Web服务器响应时