CrawlSpider爬蟲文件字段的介紹
1画拾、 CrawlSpider繼承于Spider類,除了繼承過來的屬性外(name、allow_domains)利术,還提供了新的屬性和方法:class scrapy.linkextractors.LinkExtractorLink Extractors 的目的很簡單: 提取鏈接?每個(gè)LinkExtractor有唯一的公共方法是 extract_links(),它接收一個(gè) Response 對(duì)象低矮,并返回一個(gè) scrapy.link.Link 對(duì)象印叁。
Link Extractors要實(shí)例化一次,并且 extract_links 方法會(huì)根據(jù)不同的 response 調(diào)用多次提取鏈接?
class scrapy.linkextractors.LinkExtractor(
allow = (),
deny = (),
allow_domains = (),
deny_domains = (),
deny_extensions = None,
restrict_xpaths = (),
tags = ('a','area'),
attrs = ('href'),
canonicalize = True,
unique = True,
process_value = None
)
主要參數(shù):
① allow:滿足括號(hào)中“正則表達(dá)式”的值會(huì)被提取军掂,如果為空轮蜕,則全部匹配。
② deny:與這個(gè)正則表達(dá)式(或正則表達(dá)式列表)不匹配的URL一定不提取良姆。
③ allow_domains:會(huì)被提取的鏈接的domains肠虽。
④ deny_domains:一定不會(huì)被提取鏈接的domains。
⑤ restrict_xpaths:使用xpath表達(dá)式玛追,和allow共同作用過濾鏈接税课。
2闲延、 在rules中包含一個(gè)或多個(gè)Rule對(duì)象,每個(gè)Rule對(duì)爬取網(wǎng)站的動(dòng)作定義了特定操作韩玩。如果多個(gè)rule匹配了相同的鏈接垒玲,則根據(jù)規(guī)則在本集合中被定義的順序,第一個(gè)會(huì)被使用找颓。
class scrapy.spiders.Rule(
link_extractor,
callback = None,
cb_kwargs = None,
follow = None,
process_links = None,
process_request = None
)
① link_extractor:是一個(gè)Link Extractor對(duì)象合愈,用于定義需要提取的鏈接。
② callback: 從link_extractor中每獲取到鏈接時(shí)击狮,參數(shù)所指定的值作為回調(diào)函數(shù)佛析,該回調(diào)函數(shù)接受一個(gè)response作為其第一個(gè)參數(shù)。
注意:當(dāng)編寫爬蟲規(guī)則時(shí)彪蓬,避免使用parse作為回調(diào)函數(shù)寸莫。由于CrawlSpider使用parse方法來實(shí)現(xiàn)其邏輯,如果覆蓋了 parse方法档冬,crawl spider將會(huì)運(yùn)行失敗膘茎。
③ follow:是一個(gè)布爾(boolean)值,指定了根據(jù)該規(guī)則從response提取的鏈接是否需要跟進(jìn)酷誓。 如果callback為None披坏,follow 默認(rèn)設(shè)置為True ,否則默認(rèn)為False盐数。
④ process_links:指定該spider中哪個(gè)的函數(shù)將會(huì)被調(diào)用棒拂,從link_extractor中獲取到鏈接列表時(shí)將會(huì)調(diào)用該函數(shù)。該方法主要用來過濾玫氢。
⑤ process_request:指定該spider中哪個(gè)的函數(shù)將會(huì)被調(diào)用着茸, 該規(guī)則提取到每個(gè)request時(shí)都會(huì)調(diào)用該函數(shù)。 (用來過濾request)
3琐旁、Scrapy提供了log功能涮阔,可以通過 logging 模塊使用』遗梗可以修改配置文件settings.py敬特,任意位置添加下面兩行,效果會(huì)清爽很多牺陶。
LOG_FILE = "TencentSpider.log"
LOG_LEVEL = "INFO"
Scrapy提供5層logging級(jí)別:
① CRITICAL - 嚴(yán)重錯(cuò)誤(critical)
② ERROR - 一般錯(cuò)誤(regular errors)
③ WARNING - 警告信息(warning messages)
④ INFO - 一般信息(informational messages)
⑤ DEBUG - 調(diào)試信息(debugging messages)
通過在setting.py中進(jìn)行以下設(shè)置可以被用來配置logging:
① LOG_ENABLED 默認(rèn): True伟阔,啟用logging
② LOG_ENCODING 默認(rèn): 'utf-8',logging使用的編碼
③ LOG_FILE 默認(rèn): None掰伸,在當(dāng)前目錄里創(chuàng)建logging輸出文件的文件名
④ LOG_LEVEL 默認(rèn): 'DEBUG'皱炉,log的最低級(jí)別
⑤ LOG_STDOUT 默認(rèn): False 如果為 True,進(jìn)程所有的標(biāo)準(zhǔn)輸出(及錯(cuò)誤)將會(huì)被重定向到log中狮鸭。例如合搅,執(zhí)行 print "hello" 多搀,其將會(huì)在Scrapy log中顯示。
三灾部、 CrawlSpider爬蟲案例分析
1康铭、創(chuàng)建項(xiàng)目:scrapy startproject CrawlYouYuan
2、創(chuàng)建爬蟲文件:scrapy genspider -t crawl youyuan youyuan.com
3赌髓、項(xiàng)目文件分析