gpt4 book ai didi

python - Scrapy Crawl Spider 只爬一定层数

转载 作者:行者123 更新时间:2023-11-28 16:41:23 27 4
gpt4 key购买 nike

您好,我想使用 Scrapy CrawlSpider 类 (Documentation here) 抓取 Web 的所有页面。

class MySpider(CrawlSpider):
name = 'abc.com'
allowed_domains = ['abc.com']
start_urls = ['http://www.abc.com']

rules = (
Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item')
)

def parse_item(self, response):
self.log('Hi, this is an item page! %s' % response.url)
...

(1) 所以,这个蜘蛛将从 www.abc.com 页面开始,它在 start_urls 中定义,它会自动进行解析...然后跟踪 www.abc.com 中的每个链接哪个遵循规则?我想知道有没有办法让我只能抓取一定数量的层..比如只抓取第一层(链接直接来自 www.abc.com)?

(2) 因为我在 allowed_deomains 中定义了只有 abc.com url 会被抓取。所以我不需要在规则中重新定义它?并做这样的事情:

Rule(SgmlLinkExtractor(allow=('item\.php', )), allow_domains="www.abc.com", callback='parse_item')

(3)如果我使用的是crawlspider,如果不在spider类中定义规则会怎样?它会抓取所有页面吗?或者它甚至不会遵循任何一个,因为规则还没有被“满足”?

最佳答案

  1. 设置DEPTH_LIMIT设置:

    DEPTH_LIMIT¶

    Default: 0

    The maximum depth that will be allowed to crawl for any site. If zero, no limit will be imposed.

  2. 不,您不需要添加额外的 url 检查。如果您未在 Rule 级别指定 allow_domains,它将仅提取具有 abc.com 域的 URL。

    <
  3. 如果您不定义规则,它不会提取任何 URL(将像 BaseSpider 一样工作)。

希望对您有所帮助。

关于python - Scrapy Crawl Spider 只爬一定层数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18901367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com