[Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
? ? ? ? 最近準(zhǔn)備深入學(xué)習(xí)Python相關(guān)的爬蟲知識(shí)了,如果說在使用Python爬取相對正規(guī)的網(wǎng)頁使用"urllib2 + BeautifulSoup + 正則表達(dá)式"就能搞定的話;那么動(dòng)態(tài)生成的信息頁面,如Ajax、JavaScript等就需要通過"Phantomjs +?CasperJS +?Selenium"來實(shí)現(xiàn)了。所以先從安裝和功能介紹入門,后面在介紹一些Python相關(guān)的爬蟲應(yīng)用。
一. 介紹
? ? ? ?PhantomJS
? ? ? ??PhantomJS是一個(gè)服務(wù)器端的 JavaScript API 的WebKit(開源的瀏覽器引擎)。其支持各種Web標(biāo)準(zhǔn): DOM 處理, CSS 選擇器, JSON, Canvas 和 SVG。PhantomJS可以用于頁面自動(dòng)化,網(wǎng)絡(luò)監(jiān)測,網(wǎng)頁截屏,以及無界面測試等。
? ? ? ??Selenium
? ? ? ? Selenium是一個(gè)用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。這個(gè)工具的主要功能包括:測試與瀏覽器的兼容性、測試系統(tǒng)功能,它ThoughtWorks專門為Web應(yīng)用程序編寫的一個(gè)驗(yàn)收測試工具。
? ? ? ??PIP
? ? ? ? 在介紹介紹它們之前,需要安裝PIP軟件。正如xifeijian大神所說:“作為Python愛好者,如果不知道easy_install或者pip中的任何一個(gè)的話,那么......”。
? ? ? ??easy_insall的作用和perl中的cpan,ruby中的gem類似,都提供了在線一鍵安裝模塊的傻瓜方便方式,而pip是easy_install的改進(jìn)版,提供更好的提示信息,刪除package等功能。老版本的python中只有easy_install,沒有pip。常見的具體用法如下:
二. 安裝PIP
? ? ? ? PS:你可以使用easy_install pip 直接安裝pip軟件,這更加方便。
? ? ? ??第一步:下載PIP軟件
? ? ? ? 可以在官網(wǎng)http://pypi.python.org/pypi/pip#downloads下載,同時(shí)cd切換到PIP目錄,在通過python setup.py install安裝。而我采用的是下載pip-Win_1.7.exe進(jìn)行安裝,下載地址如下:
? ? ? ??https://sites.google.com/site/pydatalog/python/pip-for-windows
? ? ? ??第二步:安裝PIP軟件
? ? ? ? 當(dāng)提示"pip and virtualenv installed"表示安裝成功,那怎么測試PIP安裝成功呢?
? ? ? ??第三步:配置環(huán)境變量
? ? ? ? 此時(shí)在cmd中輸入pip指令會(huì)提示錯(cuò)誤“不是內(nèi)部或外部命令”。
? ? ? ? 所以需要添加path環(huán)境變量。PIP安裝完成后,會(huì)在Python安裝目錄下添加python\Scripts目錄,即在python安裝目錄的Scripts目錄下,將此目錄加入環(huán)境變量中即可!過程如下:
? ? ? ??第四步:使用PIP命令
? ? ? ? 下面在CMD中使用PIP命令,“pip list outdate”列舉Python安裝庫的版本信息。
? ? ? ??PIP常用的命令如下所示:?(參考pip安裝使用詳解)
Usage: pip <command> [options] Commands: install 安裝軟件. uninstall 卸載軟件. freeze 按著一定格式輸出已安裝軟件列表 list 列出已安裝軟件. show 顯示軟件詳細(xì)信息. search 搜索軟件,類似yum里的search. wheel Build wheels from your requirements. zip 不推薦. Zip individual packages. unzip 不推薦. Unzip individual packages. bundle 不推薦. Create pybundles. help 當(dāng)前幫助. General Options: -h, --help 顯示幫助. -v, --verbose 更多的輸出,最多可以使用3次 -V, --version 現(xiàn)實(shí)版本信息然后退出. -q, --quiet 最少的輸出. --log-file <path> 覆蓋的方式記錄verbose錯(cuò)誤日志,默認(rèn)文件:/root/.pip/pip.log --log <path> 不覆蓋記錄verbose輸出的日志. --proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port. --timeout <sec> 連接超時(shí)時(shí)間 (默認(rèn)15秒). --exists-action <action> 默認(rèn)活動(dòng)當(dāng)一個(gè)路徑總是存在: (s)witch, (i)gnore, (w)ipe, (b)ackup. --cert <path> 證書.
三. 安裝Phantomjs+Selenium
? ? ? ? ?通過pip命令安裝Selenium:
? ? ? ? 官網(wǎng)http://phantomjs.org/下載PhantomJS解壓后如下圖所示:
? ? ? ? 調(diào)用時(shí)可能會(huì)報(bào)錯(cuò)“Unable to start phantomjs with ghostdriver”如圖:
? ? ? ? 此時(shí)可以設(shè)置下Phantomjs的路徑,同時(shí)如果你配置了Scripts目錄環(huán)境變量,可以解壓Phantomjs到該文件夾下。 ? ? ? ? 參考:Selenium with GhostDriver in Python on Windows - stackoverflow
四. 測試代碼
? ? ? ? 設(shè)置executable_path路徑后的代碼如下:
from selenium import webdriver driver = webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe") driver.get("http://www.baidu.com") data = driver.title print data? ? ? ? 運(yùn)行結(jié)果如下圖所示:
? ? ? ? 獲取"百度一下,你就知道",對應(yīng)HTML源碼:
? ? ? ? <title>百度一下,你就知道</title>
? ? ? ? 但是總會(huì)彈出PhantomJS的黑框,怎么辦呢?同時(shí)如何通過Python直接調(diào)用Phantomjs運(yùn)行JS呢?
? ? ? ? 同時(shí)下面的代碼可以進(jìn)行截圖:
from selenium import webdriver driver=webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe") driver.get("http://www.csdn.net") data = driver.title driver.save_screenshot('csdn.png') print data ? ? ? ? 輸出如下圖所示,圖片太長僅僅部分:>>> CSDN.NET - 全球最大中文IT社區(qū),為IT專業(yè)技術(shù)人員提供最全面的信息傳播和服務(wù)平臺(tái) >>>
? ? ? ? PS:我準(zhǔn)備使用C#調(diào)用PhantomJS.exe完成頁面截圖功能,但是沒有成功,而且使用WebBrowser中DrawToBitmap函數(shù)獲取圖片,由于ActiveX 控件不支持DrawToBitmap方法,獲取總是空白的,各種問題。
參考資料:
? ? ? ??數(shù)據(jù)抓取的藝術(shù)(一):Selenium+Phantomjs數(shù)據(jù)抓取環(huán)境配置(強(qiáng)推)
? ? ? ??數(shù)據(jù)抓取的藝術(shù)(二):數(shù)據(jù)抓取程序優(yōu)化
? ? ? ??Python使用Selenium/PhantomJS(強(qiáng)推)
? ? ? ??Python selenium的js擴(kuò)展實(shí)現(xiàn)
? ? ? ??使用python+phantomjs抓取動(dòng)態(tài)頁面
? ? ? ??用phantomjs 進(jìn)行網(wǎng)頁整頁截屏
? ? ? ??Selenium-webdriver系列教程(15)——萬能的截圖(強(qiáng)推)
? ? ? ??pyspider 爬蟲教程(三):使用 PhantomJS 渲染帶 JS 的頁面
? ? ? ?【PHP】【.NET】【JS】【AJAX】關(guān)于抓取網(wǎng)頁源代碼的問題
? ? ? ? 使用python/casperjs編寫終極爬蟲-客戶端App的抓取
? ? ? ??Python 爬蟲如何獲取 JS 生成的 URL 和網(wǎng)頁內(nèi)容-知乎
? ? ? ??通過 WebBrowser 獲取網(wǎng)頁截圖 - C#
? ? ? ??Control.DrawToBitmap 方法不支持Ajax - 官網(wǎng)
? ? ? ??IE瀏覽器整頁截屏程序(二) - C#
? ? ? ??C# 網(wǎng)絡(luò)編程之最簡單瀏覽器實(shí)現(xiàn) - 自己
? ? ? ?? 最后希望該篇基礎(chǔ)性文章對你有所幫助吧!如果有不足之處,還請海涵~
? ? ? (By:Eastmount 2015-8-19 晚上8點(diǎn) ??http://blog.csdn.net/eastmount/)
總結(jié)
以上是生活随笔為你收集整理的[Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Python爬虫] 在Windows下
- 下一篇: [Python爬虫] Selenium自