Skip to main content
 首页 » 编程设计

python之Scrapy 按条件停止分页

2025年05月04日26开发

所以我想从一个有分页的网站上抓取文章。基本上,每个页面都是文章链接的列表,蜘蛛程序在 parse_article 方法中跟踪页面上的链接,并跟踪后续的下一页链接。但是,有没有办法在指定数量的文章被抓取后停止?例如,这是我目前使用 crawlspider 的结果:

rules = ( 
 
    #next page rule:  
    Rule(LinkExtractor(restrict_xpaths="//a[@class='next']"),follow=True) 
 
    #Extract all internal links which follows this regex: 
    Rule(LinkExtractor(allow=('REGEXHERE',),deny=()),callback='parse_article'), 
) 
 
def parse_article(self, response): 
    #do parsing stuff here  

一旦我分析了 150 篇文章,我想停止关注下一页。如果我抓取了 150 多一点也没关系,我只想在达到那个数字后停止进入下一页。有什么办法吗?比如在 parse_article 方法中有一个计数器? scrapy 的新手,所以我不确定要尝试什么....我调查了depth_limit ,但我不太确定这就是我要找的东西。

任何帮助将不胜感激,谢谢!

请您参考如下方法:

您可以通过设置来实现:

CLOSESPIDER_ITEMCOUNT = 150

在您的项目设置中。

如果您的项目中有多个蜘蛛,并且只想让一个特定的蜘蛛受此设置的影响,请在 custom_settings 类变量中进行设置:

custom_settings = { 'CLOSESPIDER_ITEMCOUNT': 150 }