【发布时间】:2017-08-29 14:36:40
【问题描述】:
基本上我有一个以下页面的正则表达式规则
每个页面有 50 个链接
当我点击一个太旧的链接时(基于预定义的日期时间)
我想告诉 scrapy 停止关注更多页面,但不能完全停止,它必须继续抓取它已经决定抓取的链接 -> (完成所有创建的 Request 对象)。只是它不能再跟随任何链接。所以程序最终会停止(当它完成所有链接时)
有什么办法可以在蜘蛛内部做到这一点?
【问题讨论】:
基本上我有一个以下页面的正则表达式规则
每个页面有 50 个链接
当我点击一个太旧的链接时(基于预定义的日期时间)
我想告诉 scrapy 停止关注更多页面,但不能完全停止,它必须继续抓取它已经决定抓取的链接 -> (完成所有创建的 Request 对象)。只是它不能再跟随任何链接。所以程序最终会停止(当它完成所有链接时)
有什么办法可以在蜘蛛内部做到这一点?
【问题讨论】:
点击“太旧”页面后,抛出CloseSpider 异常。在这种情况下,Scrapy 将完成处理正在调度的链接,然后关闭。
【讨论】:
Request 对象调用)
Scrapy 的 CrawlSpider 有一个内部的 _follow_links 成员变量,它还没有被记录(目前是实验性的)
设置self._follow_links = False 将告诉scrapy 停止关注更多链接。但继续完成它已经创建的所有Request 对象
【讨论】:
从回调中引发 CloseSpider 异常。
def parse_page(self, response):
if 'Bandwidth exceeded' in response.body:
raise CloseSpider('bandwidth_exceeded')
【讨论】: