1. 程式人生 > >scrapy rule follow的理解和應用

scrapy rule follow的理解和應用

follow 是一個布林(boolean)值,指定了根據該規則從response提取的連結是否需要跟進。 如果callback 為None,follow 預設設定為 True ,添加回調函式callback後為 False,不跟蹤

一句話解釋:follow可以理解為回撥自己的回撥函式

舉個例子,如百度百科,從任意一個詞條入手,抓取詞條中的超連結來跳轉,rule會對超連結發起requests請求,如follow為True,scrapy會在返回的response中驗證是否還有符合規則的條目,繼續跳轉發起請求抓取,周而復始,如下圖

                                                             

 

程式碼實現:

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders.crawl import Rule, CrawlSpider


class BaiDuSpider(CrawlSpider):
    name = "baidu_spider"
    start_urls = ['https://baike.baidu.com/item/Python/407313?fr=aladdin']

    '''獲取url'''
    rules = (
        Rule(LinkExtractor(restrict_xpaths='//*[@class="para"]//a')),
    )

    print(rules)

ps: 爬取百度百科時需要在setting中設定不遵守robots規則:  ROBOTSTXT_OBEY = False