如何从停止的位置重新启动Spider?

时间:2018-11-29 05:14:40

标签: python web-scraping scrapy scrapy-spider

示例:如果蜘蛛在第15页上引发异常,则它应该能够在第15页重新启动。

在我查看Scrapy文档时,在 Jobs:暂停和恢复爬网主题下-我使用文档中提到的命令运行了Spider,即 scrapy crawl spidername -s JOBDIR = directory-path

因此,当我进入该特定目录路径时,可以看到已经创建了三个文件,即 requests.queue,requests.seen和spider.state [如图像链接{ {3}}我可以看到,只有spider.state的大小为1KB,其余两个文件的大小为0KB,但是在运行Spider的同时,在requests.queue文件夹下将创建一个名为 p0 的文件,但是一旦抓取工具停止并再次运行,它将删除requests.queue文件夹下的文件 p0

当我再次查看文档时,它说:“ 请求必须由pickle模块可序列化,以便持久性起作用,因此您应确保请求可序列化。

”,然后在settings.py中设置 SCHEDULER_DEBUG = TRUE 后,我可以在控制台中看到

[scrapy.core.scheduler]警告:无法序列化请求:

这是原因,为什么由于请求未序列化而无法从停止的位置恢复蜘蛛?如果是这样,我如何使请求序列化,并使蜘蛛从中断的地方恢复?还是有其他方法可以实现这一点,请提供示例代码的答案。 而且任何人都可以解释这三个文件的用途,因为Scrapy文档中没有解释。

1 个答案:

答案 0 :(得分:0)

我想为了有效地停止和恢复蜘蛛,我们应该利用DB来存储蜘蛛的状态,也许还有其他方法,但是我觉得这是最有效的方法。