Параметр Follow не работает при настройке правила в crawlspider. - PullRequest
0 голосов
/ 18 октября 2018

Я хочу извлечь нужную ссылку только на первой странице, и я установил для 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)

вывод: введите описание изображения здесь

1 Ответ

0 голосов
/ 19 октября 2018

Начиная с документы :

follow - это логическое значение, которое указывает, следует ли ссылаться на ссылки из каждого ответа, извлеченного с помощью этого правила.

Это означает, что follow=False только остановит сканер от следующих ссылок, найденных при обработке ответа, созданного этим правилом, это не повлияет на те, которые найдены при анализе результата start_urls.

Там будетне иметь никакого смысла в аргументе follow, полностью отключающем правило;если вы не хотите использовать правило, зачем вообще его создавать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...