在crawlspider中配置规则时,follow参数似乎不起作用

时间:2018-10-18 16:33:57

标签: python python-3.x scrapy

我想提取仅在第一页上想要的链接,并在搜寻器中将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)

输出: enter image description here

1 个答案:

答案 0 :(得分:0)

来自the docs

  

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

这意味着follow=False只会阻止抓取工具跟踪在处理此规则创建的响应时找到的链接,而不会影响在解析start_urls的结果时找到的链接。

follow参数完全禁用规则毫无意义;如果您不想使用规则,为什么要创建它呢?