python – Scrapy Spider:完成后重启蜘蛛
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Scrapy Spider:完成后重启蜘蛛,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1563字,纯文字阅读大概需要3分钟。
内容图文
如果关闭的原因是因为我的互联网连接(夜间互联网停机5分钟),我正试图让我的Scrapy蜘蛛再次启动.当互联网发生故障时,蜘蛛在5次尝试后关闭.
我正试图在我的蜘蛛定义中使用此函数,试图在关闭时重启蜘蛛:
def handle_spider_closed(spider, reason):
relaunch = False
for key in spider.crawler.stats._stats.keys():
if 'DNSLookupError' in key:
relaunch = True
break
if relaunch:
spider = mySpider()
settings = get_project_settings()
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.configure()
crawlerProcess.crawl(spider)
spider.crawler.queue.append_spider(another_spider)
我尝试了很多东西,比如重新实例化一个蜘蛛,但得到了Reactor已经运行的错误或类似的东西.
我想过从脚本执行蜘蛛,当蜘蛛完成后再次调用它,但两个都没有工作,因为反应堆仍在使用中.
>我的目的是在蜘蛛关闭后重置蜘蛛(蜘蛛关闭,因为它失去了互联网连接)
有谁知道一个好的,简单的方法来做到这一点?
解决方法:
我找到了解决问题的方法!我想做什么?
>失败或关闭时处理蜘蛛
>关闭时尝试重新执行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)
>我使用dont_filter = True来使Spider允许复制请求,只有当它经历错误时才会复制.
> errback = self.handle_error使Spider通过自定义handle_error函数
内容总结
以上是互联网集市为您收集整理的python – Scrapy Spider:完成后重启蜘蛛全部内容,希望文章能够帮你解决python – Scrapy Spider:完成后重启蜘蛛所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。