Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 出现错误时,scrapy无法访问请求处理程序_Http_Error Handling_Scrapy - Fatal编程技术网

Http 出现错误时,scrapy无法访问请求处理程序

Http 出现错误时,scrapy无法访问请求处理程序,http,error-handling,scrapy,Http,Error Handling,Scrapy,是的,我已经读到,我可以检查repsonse.status以获取错误代码,但问题是,在HTTP错误400:scrapy报告到日志的情况下,控件无法访问我的处理程序,但我没有机会以我的方式处理请求。在下面的示例中,下一个请求由“parse”完成,错误由“flight\u search\u start”处理 def parse(self, response): return scrapy.Request( ... call

是的,我已经读到,我可以检查repsonse.status以获取错误代码,但问题是,在HTTP错误400:scrapy报告到日志的情况下,控件无法访问我的处理程序,但我没有机会以我的方式处理请求。在下面的示例中,下一个请求由“parse”完成,错误由“flight\u search\u start”处理

    def parse(self, response):         
       return scrapy.Request(
       ...
            callback=self.flight_search_start,

            )        

    def flight_search_start(self, response):
        session = ...
        if (self.checkError(response, session)):
            return

    def checkError(self, response, session):
        if response.status == 200 or 
response.status == 201 or     response.status == 202:
            return False
NEVER GET HERE!!!
        print "Request failed!!! ",errorData(session)
        return True

还有第二个问题:当我关闭路由器时,框架会挂起很长时间,并且不会报告任何错误。

Scrapy提供了一种机制来处理错误的响应状态,您只需要将
errback
参数传递给请求对象


关于您关闭路由器,这不是因为您失去了互联网连接吗?

默认情况下,scrapy ingores代码超出200-300范围。如果你想处理它们,你必须告诉scrapy让它们通过,要么通过spider,要么通过settings.py,使用
HTTPERROR\u ALLOWED\u代码

HTTPERROR_ALLOWED_CODES = [404,403,406, 408, 500, 503, 504]
请参阅文档