我正在为10.000多个网页做一个大蟒蛇刮,这需要几个小时的时间。如果我在处理过程中断开了互联网的连接,我的脚本就会停止运行,并且当wifi重新启动时它不会重新连接。
有没有办法插入一个; “如果互联网停止,那么在你离开的地方捡起来”?
答案 0 :(得分:2)
有构建刮刀的框架 - Scrapy。它具有这样的功能 - 您可以保存执行状态,然后从这一点恢复爬行(例如,一年后)。
或者,如果您想从头开始构建它,则需要实现保存爬虫的状态。我认为尝试保存解释器状态是个坏主意,因此您需要以这种方式设计爬虫,以便可以轻松地序列化其状态。 例如,Scrapy以这种方式设计 - crawler有一些方法,它有一个生成初始请求的方法。每个请求都有一些回调。每个回调都可以生成其他请求。等等。所以Scrapy只是调用回调,排队请求,并为它们调用回调。这样的设计使Scrapy能够将请求队列保存到磁盘,然后从最后一个请求恢复执行。