更新時(shí)間:2020年09月29日10時(shí)54分 來(lái)源:傳智播客 瀏覽次數(shù):
(1)爬蟲(chóng)框架或模塊
Python自帶爬蟲(chóng)模塊:urllib、urllib2 ;
第三方爬蟲(chóng)模塊:requests,aiohttp;
爬蟲(chóng)框架: Scrapy、pyspider。
(2)爬蟲(chóng)框架或模塊的優(yōu)缺點(diǎn)
urllib和urllib2模塊都用于請(qǐng)求URL相關(guān)的操作,但他們提供了不同的功能。urllib2模塊中urllib2.urlopen可以接受一個(gè)Request對(duì)象或者url,(在接受Request對(duì)象時(shí)候,并以此可以來(lái)設(shè)置一個(gè)URL 的headers),且只接收一個(gè)url;urllib中有urlencode,而urllib2中沒(méi)有。因此,開(kāi)發(fā)人員在實(shí)際開(kāi)發(fā)中經(jīng)常會(huì)將urllib與urllib2一起使用。
requests是一個(gè)HTTP庫(kù), 它僅僅用于發(fā)送請(qǐng)求。對(duì)于HTTP請(qǐng)求而言,request是一個(gè)強(qiáng)大的庫(kù),可以自己處理下載、解析,靈活性更高,高并發(fā)與分布式部署也非常靈活,對(duì)于功能可以更好實(shí)現(xiàn)。
aiohttp是一個(gè)基于python3的asyncio攜程機(jī)制實(shí)現(xiàn)的一個(gè)http庫(kù)。相比requests,aiohttp自身就具備了異步功能。但只能在python3環(huán)境中使用。
Scrapy是封裝起來(lái)的框架,它包含了下載器、解析器、日志及異常處理,是基于多線程的,采用twisted的方式處理。對(duì)于固定單個(gè)網(wǎng)站的爬取開(kāi)發(fā),Scrapy具有優(yōu)勢(shì);對(duì)于多網(wǎng)站爬取,并發(fā)及分布式處理方面,Scrapy不夠靈活,不便調(diào)整與擴(kuò)展。
Scrapy具有以下優(yōu)點(diǎn):
·Scrapy是異步的;
·采取可讀性更強(qiáng)的XPath代替正則表達(dá)式;
·強(qiáng)大的統(tǒng)計(jì)和log 系統(tǒng);
·可同時(shí)在不同的URL上爬行;
·支持shell方式,方便獨(dú)立調(diào)試;
·方便寫(xiě)一些統(tǒng)一的過(guò)濾器;
·通過(guò)管道的方式存入數(shù)據(jù)庫(kù)。
Scrapy是基于python實(shí)現(xiàn)的爬蟲(chóng)框架,擴(kuò)展性比較差。
Pyspider是一個(gè)重量級(jí)的爬蟲(chóng)框架。我們知道Scrapy沒(méi)有數(shù)據(jù)庫(kù)集成、分布式、斷點(diǎn)續(xù)爬的支持、UI控制界面等等,若Scrapy想要實(shí)現(xiàn)這些功能,需要自行開(kāi)發(fā)。Pyspider已經(jīng)集成了前面這些功能,也正因如此,Pyspider的擴(kuò)展性太差,學(xué)習(xí)難度較大。
猜你喜歡
Python爬蟲(chóng)入門(mén)教程 百度云盤(pán)下載
北京校區(qū)