最近在使用Python爬取網(wǎng)頁內(nèi)容時,總是遇到JS臨時加載、動態(tài)獲取網(wǎng)頁信息的困難。例如爬取CSDN下載資源評論、搜狐圖片中的“原圖”等,此時嘗試學習Phantomjs和CasperJS來解決這個問題。這第一篇文章當然就是安裝過程及入門介紹。
一. 安裝Phantomjs 下載地址:http:/// 在該文件夾下創(chuàng)建test.js文件,代碼如下:
[javascript] view plaincopy
參考官方文檔:http:///documentation/
1、腳本參數(shù)-arguments.js 同時其自帶的examples文件夾中有很多模板代碼,其中獲取腳本參數(shù)代碼如下: [javascript] view plaincopy
phantomjs examples/arguments.js arg0 agr1 arg2 arg3 在根目錄新建文件loadpic.js,其代碼如下:
[javascript] view plaincopy
phantomjs loadpic.js 短短5行代碼讓我第一次體會到了PhantomJS和調(diào)用腳本函數(shù)的強大,它加載baidu頁面并存儲為一張PNG圖片,這個特性可以廣泛適用于網(wǎng)頁快拍、獲取網(wǎng)頁在線知識等功能。同時也感受到了似乎能夠解決我最初的加載JS問題。
3、頁面加載-Page Loading
A web page can be loaded, analyzed, and rendered by creating a web page object. 通過創(chuàng)建一個網(wǎng)頁對象,一個網(wǎng)頁可以被加載,分析和渲染。examples文件夾中的loadspeed.js腳本加載一個特殊的URL (不要忘了http協(xié)議) 并且計量加載該頁面的時間。 [javascript] view plaincopy
phantomjs examples/loadspeed.js http://www.baidu.com 其中包括document.title獲取網(wǎng)頁標題和t=Date.now()-t計算網(wǎng)頁加載時間。此時輸出如下圖所示,但會存在中文亂碼,如何解決呢? 添加如下代碼即可:
address = system.args[1]; phantom.outputEncoding="gbk"; 通過在網(wǎng)頁上下文中對JavaScript代碼進行計算,使用evaluate()方法。代碼是在“沙箱(sandboxed)”中運行的,它沒有辦法讀取在其所屬頁面上下文之外的任何JavaScript對象和變量。evaluate()會返回一個對象,然而它僅限制于簡單的對象并且不能包含方法或閉包。 下面這段代碼用于顯示網(wǎng)頁標題: [javascript] view plaincopy
[javascript] view plaincopy
5.DOM操作-DOM Manipulation 因為腳本好像是一個Web瀏覽器上運行的一樣,標準的DOM腳本和CSS選擇器可以很好的工作。這使得PhantomJS適合支持各種頁面自動化任務(wù)。 參考page automation tasks 下面的 useragent.js(examples文件樣本)將讀取id 為myagent的元素的 textContent 屬性: [javascript] view plaincopy
phantomjs examples/useragent.js 上面示例也提供了一種自定義user agent的方法。
使用JQuery及其他類庫(Use jQuery and Other Libraries)。如果版本是1.6,你也可以把jQuery放入你的頁面中,使用page.includeJs如下: [javascript] view plaincopy
即需要確保JavaScript代碼中包括引用的頁面存在。The Webpage instance具體用法參考前面官方文檔。 6.網(wǎng)絡(luò)請求及響應(yīng) – Network Requests and Responses 當一個頁面從一臺遠程服務(wù)器請求一個資源的時候,請求和響應(yīng)均可以通過 onResourceRequested 和 onResourceReceived 回調(diào)方法追蹤到。文檔示例 netlog.js: [javascript] view plaincopy
phantomjs examples/netlog.js http://www.baidu.com 輸出部分內(nèi)容: [plain] view plaincopy
下面顯示了從英國廣播公司網(wǎng)站獲得典范的瀑布圖(waterfall diagram): PS:其他本分參考官方文檔,目錄如下,examples中包括每個js對應(yīng)的用途、github中源代碼、Troubleshooting等。 二. 安裝CasperJS 下載地址:http:/// 用CasperJs自動瀏覽頁面-by:kiwi小白 CSDN PhantomJS安裝及快速入門教程 Windows中Phantomjs + Casperjs安裝使用方法 CasperJS 的安裝和快速入門-oschina 使用 CasperJS 對 Web 網(wǎng)站進行功能測試-oschina 利用nodejs+phantomjs+casperjs采集淘寶商品的價格 [譯]CasperJS,基于PhantomJS的工具包 最后希望文章對你有所幫助吧!如果有不足之處,還請海涵~ (By:Eastmount 2015-8-19 深夜4點半 http://blog.csdn.net/eastmount/) |
|