Scrapy CrawlSpider抓页时遵循什么顺序?

时间:2018-05-16 05:53:10

标签: python web-scraping scrapy

我是Scrapy的新手并且正在阅读 Learing Scrapy 进行学习,我对刮擦顺序有疑问。

这本书提供了一段代码:

rules = (
    Rule(LinkExtractor(restrict_xpaths='//*[contains(@class,"next")]')),
    Rule(LinkExtractor(restrict_xpaths='//*[@itemprop="url"]'),
        callback='parse_item')
)

它说Scrapy使用LIFO策略来抓取。所以我想第一项应该是最后一页上的项目,但事实证明第一项是在第一页上。

为什么呢?根据代码,我认为Scrapy将遵循第一条规则,直到找到最后一页,然后它将开始解析最后一页上的项目。我很困惑。

如果一个网站有数百万个页面,Scrapy在到达最后一页之前不会解析任何项目?

1 个答案:

答案 0 :(得分:1)

按照元组的顺序,每个页面都遵循所有规则。

例如,您有两条规则:

  1. 找到其他分页页面(无回拨)
  2. 查找产品(带回调)
  3. 如果您在第一页上运行此蜘蛛,它将找到其他分页网址并安排它们然后查找产品并使用parse_product回调或您设置的任何内容安排它们。之后对于任何具有默认回调的预定网址(你没有具体的callback参数),它会重复这个,直到找不到任何东西。