數(shù)據(jù)抓取是一門藝術(shù),和其他軟件不同,世界上不存在完美的、一致的、通用的抓取工具。為了不同的目的,需要定制不同的代碼。不過,我們不必Start from Scratch,已經(jīng)有許多的基本工具、基本方法和基礎(chǔ)框架可供使用。不同的工具、不同的方法、不同的框架的特點(diǎn)也不同。了解這些工具、方法和框架是首要任務(wù),接下來就需要明白它們的差異都在哪里、什么情境該用什么東東,最后才是析出規(guī)則、編寫代碼、運(yùn)行程序來抓取數(shù)據(jù)。所以說,其實(shí)數(shù)據(jù)抓取的學(xué)習(xí)路線,不但很長(zhǎng)而且很雜。
為了一個(gè)特定的目的,我需要爬取Google的搜索數(shù),和其他情況不同:人家是特定關(guān)鍵詞,一頁一頁地爬結(jié)果;我的是N多關(guān)鍵詞,一次一個(gè)地搜索,只需要返回的搜索條數(shù)。事實(shí)上,一共有153個(gè)關(guān)鍵詞,但每個(gè)關(guān)鍵詞都需要和所有關(guān)鍵詞握手組配成一對(duì)待檢詞組。于是,大家可以試想一下,一個(gè)153行、153列的大表格,每一個(gè)空白都等著填,這就將是153*153=23409次,也就是約23409/2=11704次,經(jīng)測(cè)試每爬取一個(gè)共詞頁面的結(jié)果并存入Excel,需要花費(fèi)4秒的時(shí)間。這意味著,以單人單線程的方式需要11704*4/3600=13個(gè)小時(shí),才能跑完。 這些內(nèi)容我還會(huì)在后續(xù)博文中詳述,現(xiàn)在先介紹上述目的情境下我使用的技術(shù)框架及其安裝配置過程。 一、技術(shù)架構(gòu) [Python2.7 + Pip + Selenium + Phantomjs] Selenium+Phantomjs,最初這對(duì)兄弟不是一家的,后來發(fā)現(xiàn)二者志趣相投、互有好感,于是結(jié)拜為兄弟,住進(jìn)了Selenium家里。(這種說法有待商榷) 看看介紹: Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE、Mozilla Firefox、Chrome等。 Phantom JS是一個(gè)服務(wù)器端的 JavaScript API 的 WebKit。其支持各種Web標(biāo)準(zhǔn): DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。 二、環(huán)境搭建 (1)安裝Python從略,我用的版本是2.7.4(WinXP和Win7的32位平臺(tái))。 (2)由于發(fā)現(xiàn)Pip比easy_install優(yōu)秀,我便使用我已經(jīng)安裝的easy_install來安裝pip。
![]() (3)安裝Phantomjs。 到Phantomjs的官方網(wǎng)站http:///download.html,下載“Download phantomjs-1.9.0-windows.zip (7.1 MB) ”。隨后打開這個(gè)壓縮包,將phantomjs.exe這一個(gè)文件解壓到系統(tǒng)路徑所能找到的地方,由于之前我已經(jīng)將“C:\Python27\Scripts”目錄添加入PATH之中,所以我就直接解壓到這個(gè)目錄。如圖所示: ![]() 至此,就已經(jīng)在Win的環(huán)境下配置好了環(huán)境。 三、測(cè)試 隨意新建一個(gè)文件,并加入如下代碼:
![]() 其實(shí),我一直不喜歡彈出來的DOS黑框,覺得這東東太影響視覺而且可能更耗時(shí),但是在我看了官方DOC后: ![]() 我發(fā)現(xiàn),是不能直接藏匿DOS彈框的。So,只好這般啦。 OK,it's time to "Enjoy yourself"...... 也請(qǐng)參看下文:《數(shù)據(jù)抓取的藝術(shù)(二):數(shù)據(jù)抓取程序優(yōu)化及抓取Google之心得》 |
|