Scrapy爬蟲框架---CrawlSpider類

(1)、簡介

在糗事百科爬蟲中咱們的爬蟲是繼承scrapy.Spider類的,這也是基本的scrapy框架爬蟲,在這個爬蟲中咱們本身在解析完整個頁面後再獲取下一頁的url,而後從新發送了一個請求,而使用CrawlsSpider類能夠幫助咱們對url提出條件,只要知足這個條件,都進行爬取,CrawlSpider類繼承自Spider,它比以前的Spider增長了新功能,便可以定義url的爬取規則,而不用手動的yield Request。php

(2)、建立CrawlSpider爬蟲

scrapy genspider -t crawl + 爬蟲名 + 主域名css

(3)、CrawlSpider中的主要模塊介紹

一、LinkExtractors連接提取器(找到知足規則的url進行爬取)html

class crapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)正則表達式

主要參數介紹:小程序

allow:容許的url,全部知足這個正則表達式的url都會被提取微信小程序

deny:禁止的url,全部知足這個正則表達式的url都不會被提取微信

allow_domains:容許的域名,在域名中的url纔會被提取app

deny_domains:禁止的域名,在域名中的url不會被提取框架

restrict_xpaths:使用xpath提取dom

restrict_css:使用css提取

二、Rule規則類

 class scrapy.contrib.spiders.Rule(link_extractor,callback=None,cb_kwargs=None,follow=None,process_links=None,process_request=None)

主要參數介紹:

link_extractor:一個LinkExtractor對象,用來定義爬取規則

callback:回調函數

follow:從response中提取的url如知足條件是否進行跟進

process_links:從link_extractor中獲取到的連接首先會傳遞給該函數,主要用來過濾掉無用的連接

(4)、實驗(微信小程序社區爬蟲)

一、目標站點選取(http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1)

二、建立項目和爬蟲

scrapy startproject weixin_app---cd weixin_app---scrapy genspider -t crawl spider wxapp-union.com

觀察一下發現spider.py文件已改變了

三、編寫代碼

改寫settings.py

禁止遵循robots協議

設置請求頭

設置爬取延遲

開啓pipeline

改寫items.py

改寫pipeline.py

改寫spiders.py

(5)、運行效果展現(只貼出了第一條數據)

(6)、總結

一、CrawlSpider主要使用LinkExtractor 和 Rule

二、注意事項:allow設置方法:限定在咱們想要的url上,不要與其餘url產生相同的正則表達式,follow設置方法:在爬取頁面的時候須要將知足條件的url進行跟進,設置爲True,callback設置方法:在獲取詳情信息的頁面需指定callback,而對於只要獲取url,而不要具體數據的狀況則不須要指定該參數。

相關文章
相關標籤/搜索