爬虫框架scrapy如何循环启动自身项目?

Scrapy完成一次爬虫项目完成后,如何让爬虫继续运行!(512M内存不想折腾reids,也不想新加其他机器) class MySpider(scra…
关注者
2
被浏览
4,879

1 个回答

一次读完是最好的办法,控制爬取速度就行。我不知道你用的什么代理,你可以试试我写的 免费代理服务器 ,可以在本地源源不断地提供可用代理。

如果要循环执行,也有几种方法,你写的循环执行scrapy-crawl命令就可以,但这样是很笨的,因为每次都要重启进程。

比较好的选择是使用scrapy提供的内部机制,比如reactor+CrawlerRunner,这样你可以在外部对爬虫进行控制,增加你想要的任何爬取条件,在同一个线程里重复启动爬虫,爬取结束后干掉reactor即可。具体的做法,Scrapy的 官方文档里有介绍 ,循环条件你要自己写。

我上面贴的代理服务器,将Scrapy底层的reactor运行在Tornado的event loop之上,在需要的时候调用各个爬虫,也符合你的需要,你可以研究一下。

另外提供一个反面教材,也是我自己以前写的, 用Python脚本定时执行crapy-crawl命令 ,你也可以参考一下。