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