最近準備深刻學習Python相關的爬蟲知識了,若是說在使用Python爬取相對正規的網頁使用"urllib2 + BeautifulSoup + 正則表達式"就能搞定的話;那麼動態生成的信息頁面,如Ajax、JavaScript等就須要經過"Phantomjs + CasperJS + Selenium"來實現了。因此先從安裝和功能介紹入門,後面在介紹一些Python相關的爬蟲應用。html
PhantomJS
PhantomJS是一個服務器端的 JavaScript API 的WebKit(開源的瀏覽器引擎)。其支持各類Web標準: DOM 處理, CSS 選擇器, JSON, Canvas 和 SVG。PhantomJS能夠用於頁面自動化,網絡監測,網頁截屏,以及無界面測試等。
Selenium
Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE(七、八、9)、Mozilla Firefox、Mozilla Suite等。這個工具的主要功能包括:測試與瀏覽器的兼容性、測試系統功能,它ThoughtWorks專門爲Web應用程序編寫的一個驗收測試工具。
PIP
在介紹介紹它們以前,須要安裝PIP軟件。正如xifeijian大神所說:「做爲Python愛好者,若是不知道easy_install或者pip中的任何一個的話,那麼......」。
easy_insall的做用和perl中的cpan,ruby中的gem相似,都提供了在線一鍵安裝模塊的傻瓜方便方式,而pip是easy_install的改進版,提供更好的提示信息,刪除package等功能。老版本的python中只有easy_install,沒有pip。常見的具體用法以下:python
easy_install的用法: 1) 安裝一個包 $ easy_install <package_name> $ easy_install "<package_name>==<version>" 2) 升級一個包 $ easy_install -U "<package_name>>=<version>" pip的用法 1) 安裝一個包 $ pip install <package_name> $ pip install <package_name>==<version> 2) 升級一個包 (若是不提供version號,升級到最新版本) $ pip install --upgrade <package_name>>=<version> 3)刪除一個包 $ pip uninstall <package_name>
第一步:下載PIP軟件
能夠在官網http://pypi.python.org/pypi/pip#downloads下載,同時cd切換到PIP目錄,在經過python setup.py install安裝。而我採用的是下載pip-Win_1.7.exe進行安裝,下載地址以下:
https://sites.google.com/site/pydatalog/python/pip-for-windows
第二步:安裝PIP軟件web
1 Usage: 2 pip <command> [options] 3 4 Commands: 5 install 安裝軟件. 6 uninstall 卸載軟件. 7 freeze 按着必定格式輸出已安裝軟件列表 8 list 列出已安裝軟件. 9 show 顯示軟件詳細信息. 10 search 搜索軟件,相似yum裏的search. 11 wheel Build wheels from your requirements. 12 zip 不推薦. Zip individual packages. 13 unzip 不推薦. Unzip individual packages. 14 bundle 不推薦. Create pybundles. 15 help 當前幫助. 16 17 General Options: 18 -h, --help 顯示幫助. 19 -v, --verbose 更多的輸出,最多可使用3次 20 -V, --version 現實版本信息而後退出. 21 -q, --quiet 最少的輸出. 22 --log-file <path> 覆蓋的方式記錄verbose錯誤日誌,默認文件:/root/.pip/pip.log 23 --log <path> 不覆蓋記錄verbose輸出的日誌. 24 --proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port. 25 --timeout <sec> 鏈接超時時間 (默認15秒). 26 --exists-action <action> 默認活動當一個路徑老是存在: (s)witch, (i)gnore, (w)ipe, (b)ackup. 27 --cert <path> 證書. 28
經過pip命令安裝Selenium:正則表達式
1 from selenium import webdriver 2 driver = webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe") 3 driver.get("http://www.baidu.com") 4 data = driver.title 5 print data
1 from selenium import webdriver 2 driver=webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe") 3 driver.get("http://www.csdn.net") 4 data = driver.title 5 driver.save_screenshot('csdn.png') 6 print data
>>> CSDN.NET - 全球最大中文IT社區,爲IT專業技術人員提供最全面的信息傳播和服務平臺 >>>
參考資料:
數據抓取的藝術(一):Selenium+Phantomjs數據抓取環境配置(強推)
數據抓取的藝術(二):數據抓取程序優化
Python使用Selenium/PhantomJS(強推)
Python selenium的js擴展實現
使用python+phantomjs抓取動態頁面
用phantomjs 進行網頁整頁截屏
Selenium-webdriver系列教程(15)——萬能的截圖(強推)
pyspider 爬蟲教程(三):使用 PhantomJS 渲染帶 JS 的頁面
【PHP】【.NET】【JS】【AJAX】關於抓取網頁源代碼的問題
使用python/casperjs編寫終極爬蟲-客戶端App的抓取
Python 爬蟲如何獲取 JS 生成的 URL 和網頁內容-知乎
經過 WebBrowser 獲取網頁截圖 - C#
Control.DrawToBitmap 方法不支持Ajax - 官網
IE瀏覽器整頁截屏程序(二) - C#
C# 網絡編程之最簡單瀏覽器實現 - 本身
最後但願該篇基礎性文章對你有所幫助吧!若是有不足之處,還請海涵~
(By:Eastmount 2015-8-19 晚上8點 http://blog.csdn.net/eastmount/)編程