使用Scrapy,我怎样才能跳回到调用Request的errback函数的位置?

时间:2018-02-17 10:53:13

标签: python scrapy web-crawler

在处理请求时引发异常时,将调用 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]

提前致谢任何可以提出建议的人:)

1 个答案:

答案 0 :(得分:0)

来自official guide

  

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())