scrapy系列:大名鼎鼎的python爬蟲(chóng)框架,網(wǎng)上成熟教程有很多俺榆,我的一些使用心得后期會(huì)單開(kāi)一章。
portia:可視化爬蟲(chóng)。也是scrapinghub系列弄出來(lái)的東西观谦,底層是scrapy叶洞,比較好玩,基本沒(méi)有代碼難度,后面會(huì)單獨(dú)寫(xiě)一下峦椰。
上面兩個(gè)的官方信息可以看: Scrapinghub Support Center
pyspider: pyspider中文網(wǎng) 一個(gè)國(guó)人編寫(xiě)的強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)并帶有強(qiáng)大的WebUI。采用Python語(yǔ)言編寫(xiě)汰规,分布式架構(gòu)汤功,支持多種數(shù)據(jù)庫(kù)后端,強(qiáng)大的WebUI支持腳本編輯器溜哮,任務(wù)監(jiān)視器滔金,項(xiàng)目管理器以及結(jié)果查看器。這是官方簡(jiǎn)介茂嗓,我一年前用過(guò)兩次餐茵,我記得當(dāng)時(shí)還沒(méi)這么強(qiáng)但也算是主流爬蟲(chóng)框架之一,相信使用體驗(yàn)比較好述吸。
urllib忿族、urllib、requests:應(yīng)該是不必多說(shuō)蝌矛,推薦使用requests(Requests: HTTP for Humans)道批,有官方中文文檔。
BeautifulSoup: Beautiful Soup4 經(jīng)典網(wǎng)頁(yè)解析工具入撒,多多少少要去了解一點(diǎn)隆豹,對(duì)應(yīng)java里的JSoup。
pyquery:PyQuery complete API 基本照搬jQuery茅逮,我本人寫(xiě)定向獨(dú)立爬蟲(chóng)比較喜歡的一種解析庫(kù)璃赡,語(yǔ)法簡(jiǎn)單友好,關(guān)鍵與jQuery一樣的定位方式献雅,可以先在瀏覽器的console中調(diào)好語(yǔ)句然后拷過(guò)來(lái)就好碉考。
lxml:lxml 用處廣泛,不局限于解析HTML惩琉。主要定位方式是xpath豆励。
關(guān)于xpath【xpath教程】我想單獨(dú)在這說(shuō)幾句。在我看來(lái)xpath對(duì)爬蟲(chóng)工程師來(lái)說(shuō)是一種必學(xué)的定位方式瞒渠。學(xué)習(xí)成本良蒸,低回報(bào)性大。像當(dāng)你的爬蟲(chóng)數(shù)量規(guī)模大到一定程度伍玖,當(dāng)你的爬蟲(chóng)復(fù)雜度到達(dá)一個(gè)規(guī)模嫩痰,你去考慮分布式、多進(jìn)程窍箍、異步串纺,考慮將你的解析模塊拆分成各個(gè)子模塊丽旅。這個(gè)時(shí)候你的通信可能會(huì)困擾你一下,雖說(shuō)直接傳對(duì)象并不困難纺棺,一個(gè)RPC通信的事情榄笙。但如果你將通信內(nèi)容換成xpath會(huì)大大降低通信成本,反正你的目的是定位到頁(yè)面上的元素祷蝌。我其他文章實(shí)現(xiàn)的列表識(shí)別茅撞,其模塊間通信就是建立在xpth上。
html2text:html2text 見(jiàn)過(guò)它很多次巨朦,但是沒(méi)用過(guò)米丘,作用就是去除html標(biāo)簽,其替代方案太多糊啡。
readability:Readability Python API 基于文本密度的正文提取拄查。很多語(yǔ)言都有這個(gè)庫(kù)。這個(gè)庫(kù)安利下棚蓄,源碼的價(jià)值比其使用價(jià)值還要大堕扶。
pyV8:PyV8 V8引擎,用于執(zhí)行js癣疟。
Mechanize:mechanize? 用于模仿瀏覽器操作挣柬,包括操作賬號(hào)密碼登錄,用的不多睛挚,下面會(huì)說(shuō)它與Selenium的差別邪蛔。
Selenium:Selenium Documentation 模擬瀏覽器,支持phantomjs扎狱、firefox侧到、chrome等。關(guān)于Selenium的一些注意事項(xiàng)淤击,我也會(huì)單開(kāi)一章匠抗,畢竟踩了不少坑。
Mechanize與Selenium的區(qū)別:Mechanize不支持JavaScript污抬,Selenium是一套完整的Web應(yīng)用程序測(cè)試系統(tǒng)汞贸,我選Selenium。