通过Scrapy在一定深度爬行简单的网站

时间:2012-06-04 06:39:17

标签: web-crawler web-scraping scrapy

我想废弃一个关于一些问题和答案的3个深度的网站。它具有如下简单结构:

  • 第二深度 - >包含数据(问题描述)
  • 第3深度 - >包含实际数据(问题和答案)

    /prob
      +-> /prob/problemLists.html
        +-> /prob/problem123456.html
    

我使用response.meta['depth']作为条件编写了如下的Scrapy代码。

有没有更好的方法呢?

class DmzSpider(CrawlSpider):
    rules = (
         Rule(SgmlLinkExtractor(deny=('index\.htm',callback='parse_list'))),
    )

    def parse_list(self, response):
        if response.meta['depth'] == 2:
        # Scrap descriptions ...
        return items

        elif response.meta['depth'] ==3:
            parse_item(response)

    def parse_item(self, response):
        # Parse items and save it according to prob_id...

        return items

此外,我尝试了以下3个选项,其中没有人工作,而request_depth_max = 1摘要: 1.添加: 来自scrapy.conf导入设置 settings.overrides ['DEPTH_LIMIT'] = 2 蜘蛛文件 2.使用-s选项运行命令行: / usr / bin / scrapy crawl -s DEPTH_LIMIT = 2 mininova.org 3.添加到settings.py和scrapy.cfg: DEPTH_LIMIT = 2

如何配置为超过1?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以将depth limit设置为3,请参阅settings page in Scrapy documentation