Python自帶:urllib,urllib2
第 三 方:requests
框 架:Scrapy
urllib和urllib2模塊都做與請(qǐng)求URL相關(guān)的操作,但他們提供不同的功能。
urllib2.:urllib2.urlopen可以接受一個(gè)Request對(duì)象或者url,(在接受Request對(duì)象時(shí)候,并以此可以來(lái)設(shè)置一個(gè)URL 的headers),urllib.urlopen只接收一個(gè)url
urllib 有urlencode,urllib2沒有,因此總是urllib,urllib2常會(huì)一起使用的原因
scrapy是封裝起來(lái)的框架,他包含了下載器,解析器,日志及異常處理,基于多線程, twisted的方式處理,對(duì)于固定單個(gè)網(wǎng)站的爬取開發(fā),有優(yōu)勢(shì),但是對(duì)于多網(wǎng)站爬取 100個(gè)網(wǎng)站,并發(fā)及分布式處理方面,不夠靈活,不便調(diào)整與括展。
request 是一個(gè)HTTP庫(kù), 它只是用來(lái),進(jìn)行請(qǐng)求,對(duì)于HTTP請(qǐng)求,他是一個(gè)強(qiáng)大的庫(kù),下載,解析全部自己處理,靈活性更高,高并發(fā)與分布式部署也非常靈活,對(duì)于功能可以更好實(shí)現(xiàn).
Scrapy優(yōu)缺點(diǎn):
優(yōu)點(diǎn):scrapy 是異步的
采取可讀性更強(qiáng)的xpath代替正則
強(qiáng)大的統(tǒng)計(jì)和log系統(tǒng)
同時(shí)在不同的url上爬行
支持shell方式,方便獨(dú)立調(diào)試
寫middleware,方便寫一些統(tǒng)一的過濾器
通過管道的方式存入數(shù)據(jù)庫(kù)
缺點(diǎn):基于python的爬蟲框架,擴(kuò)展性比較差
基于twisted框架,運(yùn)行中的exception是不會(huì)干掉reactor,并且異步框架出錯(cuò)后是不會(huì)停掉其他任務(wù)的,數(shù)據(jù)出錯(cuò)后難以察覺。








暫無(wú)數(shù)據(jù)