Scrapy爬蟲框架---CrawlSpider類


(1)、簡介

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

(2)、創建CrawlSpider爬蟲

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

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

1、LinkExtractors鏈接提取器(找到滿足規則的url進行爬取)

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才會被提取

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

restrict_xpaths:使用xpath提取

restrict_css:使用css提取

2、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)、實驗(微信小程序社區爬蟲)

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

2、創建項目和爬蟲

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

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

3、編寫代碼

改寫settings.py

禁止遵循robots協議

設置請求頭

設置爬取延遲

開啟pipeline

改寫items.py

改寫pipeline.py

改寫spiders.py

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

(6)、總結

1、CrawlSpider主要使用LinkExtractor 和 Rule

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM