Answers
对于这种问题,通常有几种方案
第一种方式
通过scrapy的error handle机制,即,当spider遇到错误或关闭时,让spider重新执行。 参考代码如下:
import time
class mySpider(scrapy.Spider):
name = "myspider"
allowed_domains = ["google.com"]
start_urls = [
"http://www.google.com",
]
def handle_error(self, failure):
self.log("Error Handle: %s" % failure.request)
self.log("Sleeping 60 seconds")
time.sleep(60)
url = 'http://www.google.com'
yield scrapy.Request(url, self.parse, errback=self.handle_error, dont_filter=True)
def start_requests(self):
url = 'http://www.google.com'
yield scrapy.Request(url, self.parse, errback=self.handle_error)
注意,
1. 需要使用 dont_filter=True
来保证,只有当遇到错误时,spider可以复制一个请求
2. errback=self.handle_error
来确保spider可以调用handle_error
函数
第二种方式
使用supervisor
来监控 spider 的运行。具体请参考相关文档。
我不是侧田
answered 8 years, 9 months ago