[Python爬蟲] 在Windows下安裝PIP+Phantomjs+Selenium

        最近準備深刻學習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

        第一步:下載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




        當提示"pip and virtualenv installed"表示安裝成功,那怎麼測試PIP安裝成功呢?
        第三步:配置環境變量
        此時在cmd中輸入pip指令會提示錯誤「不是內部或外部命令」。
        因此須要添加path環境變量。PIP安裝完成後,會在Python安裝目錄下添加python\Scripts目錄,即在python安裝目錄的Scripts目錄下,將此目錄加入環境變量中便可!過程以下:


        第四步:使用PIP命令
        下面在CMD中使用PIP命令,「pip list outdate」列舉Python安裝庫的版本信息。

        PIP經常使用的命令以下所示: (參考 pip安裝使用詳解)
 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  

 

三. 安裝Phantomjs+Selenium

         經過pip命令安裝Selenium:正則表達式





        官網 http://phantomjs.org/下載PhantomJS解壓後以下圖所示:

        調用時可能會報錯「Unable to start phantomjs with ghostdriver」如圖:

        此時能夠設置下Phantomjs的路徑,同時若是你配置了Scripts目錄環境變量,能夠解壓Phantomjs到該文件夾下。
        參考: Selenium with GhostDriver in Python on Windows - stackoverflow

四. 測試代碼


        設置executable_path路徑後的代碼以下:
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
        運行結果以下圖所示:

        獲取"百度一下,你就知道",對應HTML源碼:
        <title>百度一下,你就知道</title>
        可是總會彈出PhantomJS的黑框,怎麼辦呢?同時如何經過Python直接調用Phantomjs運行JS呢?
        同時下面的代碼能夠進行截圖:
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專業技術人員提供最全面的信息傳播和服務平臺
>>> 

 


        PS:我準備使用C#調用PhantomJS.exe完成頁面截圖功能,可是沒有成功,並且使用WebBrowser中DrawToBitmap函數獲取圖片,因爲ActiveX 控件不支持DrawToBitmap方法,獲取老是空白的,各類問題。


參考資料:
        數據抓取的藝術(一):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/編程

相關文章
相關標籤/搜索