在糗事百科爬蟲中咱們的爬蟲是繼承scrapy.Spider類的,這也是基本的scrapy框架爬蟲,在這個爬蟲中咱們本身在解析完整個頁面後再獲取下一頁的url,而後從新發送了一個請求,而使用CrawlsSpider類能夠幫助咱們對url提出條件,只要知足這個條件,都進行爬取,CrawlSpider類繼承自Spider,它比以前的Spider增長了新功能,便可以定義url的爬取規則,而不用手動的yield Request。php
scrapy genspider -t crawl + 爬蟲名 + 主域名css
一、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中獲取到的連接首先會傳遞給該函數,主要用來過濾掉無用的連接
一、目標站點選取(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
一、CrawlSpider主要使用LinkExtractor 和 Rule
二、注意事項:allow設置方法:限定在咱們想要的url上,不要與其餘url產生相同的正則表達式,follow設置方法:在爬取頁面的時候須要將知足條件的url進行跟進,設置爲True,callback設置方法:在獲取詳情信息的頁面需指定callback,而對於只要獲取url,而不要具體數據的狀況則不須要指定該參數。