繁体   English   中英

python/scrapy 问题:如何避免无限循环

[英]python/scrapy question: How to avoid endless loops

我正在使用网络抓取框架 scrapy 来挖掘一些网站的数据。 我正在尝试使用 CrawlSpider 并且页面有一个“返回”和“下一步”按钮。 URL 的格式为

www.qwerty.com/###

其中### 是每次按下下一个按钮时递增的数字。 如何格式化规则,以免发生无限循环。

这是我的规则:

rules = (
        Rule(SgmlLinkExtractor(allow='http://not-a-real-site.com/trunk-framework/791'),follow=True,callback='parse_item',
    ),
)

不应该发生无限循环。 Scrapy 将过滤掉重复的网址。

是什么让你认为程序会 go 进入无限循环,你是如何测试的? 如果 scrapy 之前已经下载过 url,则不会下载它。 您是否尝试通过所有页面 go,当您在最后一页单击下一步时会发生什么?

如果每次按下下一个链接时站点都会生成一个新数字,您可能会陷入无限循环。 尽管案例是站点代码损坏,但您可以限制代码中的最大页面数,以避免无限循环。

您可以设置要关注的链接数量限制:使用DEPTH_LIMIT设置。

或者,您可以在解析回调 function 中检查当前深度:

def parse(self, response):
    if response.meta['depth'] > 100:
        print 'Loop?'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM