數據抓取的藝術(一):Selenium+Phantomjs數據抓取環境配置
數據抓取是一門藝術,和其他軟件不同,世界上不存在完美的、一致的、通用的抓取工具。為了不同的目的,需要定製不同的代碼。不過,我們不必Start from Scratch,已經有許多的基本工具、基本方法和基礎框架可供使用。不同的工具、不同的方法、不同的框架的特點也不同。了解這些工具、方法和框架是首要任務,接下來就需要明白它們的差異都在哪裏、什麼情境該用什麼東東,最後才是析出規則、編寫代碼、運行程序來抓取數據。所以說,其實數據抓取的學習路線,不但很長而且很雜。為了一個特定的目的,我需要爬取Google的搜索數,和其他情況不同:人家是特定關鍵詞,一頁一頁地爬結果;我的是N多關鍵詞,一次一個地搜索,隻需要返回的搜索條數。事實上,一共有153個關鍵詞,但每個關鍵詞都需要和所有關鍵詞握手組配成一對待檢詞組。於是,大家可以試想一下,一個153行、153列的大表格,每一個空白都等著填,這就將是153*153=23409次,也就是約23409/2=11704次,經測試每爬取一個共詞頁麵的結果並存入Excel,需要花費4秒的時間。這意味著,以單人單線程的方式需要11704*4/3600=13個小時,才能跑完。
這些內容我還會在後續博文中詳述,現在先介紹上述目的情境下我使用的技術框架及其安裝配置過程。
一、技術架構
[Python2.7 + Pip + Selenium + Phantomjs]
Selenium+Phantomjs,最初這對兄弟不是一家的,後來發現二者誌趣相投、互有好感,於是結拜為兄弟,住進了Selenium家裏。(這種說法有待商榷)
看看介紹:
Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE、Mozilla Firefox、Chrome等。
Phantom JS是一個服務器端的 JavaScript API 的 WebKit。其支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。
二、環境搭建
(1)安裝Python從略,我用的版本是2.7.4(WinXP和Win7的32位平台)。
(2)由於發現Pip比easy_install優秀,我便使用我已經安裝的easy_install來安裝pip。
- easy_install pip

(3)安裝Phantomjs。
到Phantomjs的官方網站https://phantomjs.org/download.html,下載“Download phantomjs-1.9.0-windows.zip (7.1 MB) ”。隨後打開這個壓縮包,將phantomjs.exe這一個文件解壓到係統路徑所能找到的地方,由於之前我已經將“C:\Python27\Scripts”目錄添加入PATH之中,所以我就直接解壓到這個目錄。如圖所示:

至此,就已經在Win的環境下配置好了環境。
三、測試
隨意新建一個文件,並加入如下代碼:
-
from selenium
import webdriver
-
driver = webdriver.PhantomJS()
-
driver.get('www.baidu.com')
-
data = driver.find_element_by_id('cp').text
- print data

其實,我一直不喜歡彈出來的DOS黑框,覺得這東東太影響視覺而且可能更耗時,但是在我看了官方DOC後:

我發現,是不能直接藏匿DOS彈框的。So,隻好這般啦。
OK,it's time to "Enjoy yourself"......
也請參看下文:《數據抓取的藝術(二):數據抓取程序優化及抓取Google之心得》
最後更新:2017-04-03 18:51:59