學(xué)習(xí)爬蟲有一段時(shí)間了,從Python的Urllib、Urlllib2到scrapy,當(dāng)然,scrapy的性能且效率是最高的,自己之前也看過(guò)一些資料,在此學(xué)習(xí)總結(jié)下。
Scrapy介紹
關(guān)于scrapy
scrapy是一個(gè)健壯的,可以從網(wǎng)絡(luò)上抓取數(shù)據(jù)的web框架,只需要一個(gè)配置文件就能組合各種組件和配置選項(xiàng)。同時(shí),scrapy是一個(gè)基于事件的架構(gòu) 因此我們可以級(jí)聯(lián)很多操作,包括清理,組織,存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫(kù),導(dǎo)出數(shù)據(jù)等。
假設(shè)你現(xiàn)在要抓取一個(gè)網(wǎng)站,這個(gè)網(wǎng)站的每一頁(yè)都有一百個(gè)條目,Scrapy可以毫不費(fèi)勁地同時(shí)對(duì)這個(gè)網(wǎng)站發(fā)起16個(gè)請(qǐng)求,假如每個(gè)請(qǐng)求需要一秒鐘來(lái)完成,就相當(dāng)于每秒鐘爬取16個(gè)頁(yè)面,相當(dāng)于每秒鐘生成了1600個(gè)條目,假如要把這些條目同時(shí)存儲(chǔ)到云上,每一個(gè)條目的存儲(chǔ)需要3秒鐘(假設(shè)的),為了處理這16個(gè)請(qǐng)求,就需要運(yùn)行1600 *3 = 4800個(gè)并發(fā)的寫入請(qǐng)求,對(duì)于一個(gè)傳統(tǒng)的多線程程序來(lái)說(shuō),就需要轉(zhuǎn)換成4800個(gè)線程,這會(huì)對(duì)系統(tǒng)造成極大的壓力。而對(duì)于Scrapy來(lái)說(shuō),只要你的硬件過(guò)關(guān), 4800個(gè)并發(fā)請(qǐng)求是沒有問題的。
scrapy的優(yōu)點(diǎn)
Scrapy已經(jīng)發(fā)展了5年有多,已經(jīng)變得成熟和穩(wěn)定,除了上面提到的性能優(yōu)點(diǎn)外,Scrapy還有以下幾點(diǎn)優(yōu)點(diǎn):
1. Scrapy可以處理不完整的HTML
網(wǎng)友評(píng)論