在处理请求时引发异常时,将调用 errback 函数。问题是,我怎样才能跳回到调用 errback 函数的位置? 例如:
for url in self.urls:
yield scrapy.Request(url, callback=self.parse_httpbin,
errback=self.errback_httpbin,
dont_filter=True)
def errback_httpbin(self, failure):
#do something to fix the error#
如果在处理url [k], errback_httpbin 时,如何跳回到for循环中的处理url [k] 。
提前致谢任何可以提出建议的人:)
答案 0 :(得分:0)
errback(callable) - 在处理请求时引发任何异常时将调用的函数。这包括因404 HTTP错误而失败的页面等。它接收Twisted Failure实例作为第一个参数。
Twisted Failure对象包含一些可能对您有用的有用方法和属性:
实例变量值:导致此失败的异常实例。
实例变量类型:异常类。
实例变量堆栈:帧列表,最里面的最后一个,不包括失败。 __ init __。
实例变量帧:帧列表,最里面的。
方法getTracebackObject:获取一个对象,该对象表示可以传递给traceback.extract_tb的此失败堆栈。
方法getErrorMessage:获取导致此失败的异常字符串。
或者您可以尝试调试。我最喜欢的方法是添加一个main.py,你可以在调试模式下从IDE启动,让你使用断点等... main.py的内容将是:
from scrapy import cmdline
cmdline.execute("scrapy crawl yourspider".split())