首页 > 解决方案 > 在 crawlspider 中配置规则时,follow 参数似乎不起作用

问题描述

我想只在第一页提取我想要的链接,并且我在爬虫中设置了DEPTH_LIMIT为1,匹配规则中的参数rule()如下=False,但是我还是发起了多个请求,我不知道为什么。我希望有人能回答我的疑问。提前致谢。

# -*- coding: utf-8 -*-

import scrapy
from scrapy.http import Request
from scrapy.spiders import CrawlSpider,Rule
from scrapy.linkextractors import LinkExtractor

class OfficialSpider(CrawlSpider):
    name = 'official'
    allowed_domains = ['news.chd.edu.cn','www.chd.edu.cn']
    start_urls = ['http://www.chd.edu.cn']

    custom_settings = {
        'DOWNLOAD_DELAY':0,
        'DEPTH_LIMIT':1,
    }

    rules = (
        # Rule(LinkExtractor(allow=('http://news.chd.edu.cn/',)),callback='parse_news',follow=False),
        Rule(LinkExtractor(allow=('http://www.chd.edu.cn/')),callback='parse_item',follow=False),
        Rule(LinkExtractor(allow=("",)),follow=False),
    )

    def parse_news(self,response):
        print(response.url)
        return {}

    def parse_item(self,response):
        self.log("item链接:")
        self.log(response.url)

输出: 在此输入图片描述

标签: pythonpython-3.xscrapy

解决方案


文档

follow是一个布尔值,它指定是否应从使用此规则提取的每个响应中遵循链接。

这意味着follow=False只会阻止爬虫在处理由该规则创建的响应时找到的链接,它不会影响解析结果时找到的链接start_urls

follow完全禁用规则的论点毫无意义。如果您不想使用规则,为什么要创建它呢?


推荐阅读