CrawlSpider

CrawlSpider 類為我們提供一系列方法,可以按照指定的規(guī)則在頁面中提取并跟蹤鏈接。

我們通過 rules 屬性來定義提取的鏈接的規(guī)則,看下面一個(gè)簡單例子:

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

import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
# 鏈接提取器
from scrapy.contrib.linkextractors import LinkExtractor

class QuotesSpider(CrawlSpider):
    name = "quotes"

    allowed_domains = ['quotes.toscrape.com']
    start_urls = ['http://quotes.toscrape.com/']

    rules = (
        # 提取匹配包含 'tag' 但不含 'love' 的鏈接并使用 parse_item 方法進(jìn)行爬取
        Rule(
            LinkExtractor(allow=('tag'), deny=('love')), 
            callback='parse_item'
        ),
    )

    def parse_item(self, response):
        self.logger.info('開始爬?。? + response.url)

        # 提取 tag 內(nèi)容
        tag = response.css('h3 > a::text').extract_first()

        return {
        "url": response.url,
        "tag": tag,
        }

上面這個(gè)例子,我們從主頁 “http://quotes.toscrape.com/” 中提取包含字符 “tag” 的鏈接,然后從這些鏈接中提取 tag 和 url。

Rule 的參數(shù)如下:

class scrapy.spiders.Rule(
    link_extractor, 
    callback=None, 
    cb_kwargs=None, 
    follow=None, 
    process_links=None, 
    process_request=None
    )
  • link_extractor:定義了鏈接的提取規(guī)則。
  • callback:回調(diào)函數(shù),表示用哪個(gè)函數(shù)來處理提取到的鏈接(注意:不可用 parse 方法作為回調(diào)函數(shù))。
  • cb_kwargs:一個(gè)要傳遞關(guān)鍵字參數(shù)給回調(diào)函數(shù)的的字典。
  • follow:一個(gè)布爾值,(待補(bǔ)充)。
  • process_links:(待補(bǔ)充)。
  • process_request:(待補(bǔ)充)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容