1. 程式人生 > >Python爬蟲利器之PhantomJS的用法

Python爬蟲利器之PhantomJS的用法

前言

大家有沒有發現之前我們寫的爬蟲都有一個共性,就是隻能爬取單純的html程式碼,如果頁面是JS渲染的該怎麼辦呢?如果我們單純去分析一個個後臺的請求,手動去摸索JS渲染的到的一些結果,那簡直沒天理了。所以,我們需要有一些好用的工具來幫助我們像瀏覽器一樣渲染JS處理的頁面。

其中有一個比較常用的工具,那就是

Full web stack No browser required

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast andnative support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

PhantomJS是一個無介面的,可指令碼程式設計的WebKit瀏覽器引擎。它原生支援多種web 標準:DOM 操作,CSS選擇器,JSON,Canvas 以及SVG。

好,接下來我們就一起來了解一下這個神奇好用的庫的用法吧。

安裝

PhantomJS安裝方法有兩種,一種是下載原始碼之後自己來編譯,另一種是直接下載編譯好的二進位制檔案。然而自己編譯需要的時間太長,而且需要挺多的磁碟空間。官方推薦直接下載二進位制檔案然後安裝。

大家可以依照自己的開發平臺選擇不同的包進行下載

下載地址

當然如果你不嫌麻煩,可以選擇

下載原始碼

然後自己編譯。

目前(2016/3/21)最新發行版本是 v2.1,

安裝完成之後命令列輸入

1phantomjs-v

如果正常顯示版本號,那麼證明安裝成功了。如果提示錯誤,那麼請重新安裝。

本文介紹大部分內容來自於官方文件,博主對其進行了整理,學習更多請參考

官方文件

快速開始

第一個程式

第一個程式當然是Hello World,新建一個 js 檔案。命名為 helloworld.js

JavaScript
1 2 console.log('Hello, world!'); phantom.exit();

命令列輸入

1phantomjs helloworld.js

程式輸出了 Hello,world!程式第二句話終止了 phantom 的執行。

注意:phantom.exit();這句話非常重要,否則程式將永遠不會終止。

頁面載入

可以利用 phantom 來實現頁面的載入,下面的例子實現了頁面的載入並將頁面儲存為一張圖片。

JavaScript
1 2 3 4 5 6 7 8 varpage=require('webpage').create(); page.open('http://cuiqingcai.com',function(status){ console.log("Status: "+status); if(status==="success"){ page.render('example.png'); } phantom.exit(); });

首先建立了一個webpage物件,然後載入本站點主頁,判斷響應狀態,如果成功,那麼儲存截圖為 example.png

以上程式碼命名為 pageload.js,命令列

1phantomjs pageload.js

發現執行成功,然後目錄下多了一張圖片,example.png

因為這個 render 方法,phantom 經常會用到網頁截圖的功能。

測試頁面載入速度

下面這個例子計算了一個頁面的載入速度,同時還用到了命令列傳參的特性。新建檔案儲存為 loadspeed.js

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 varpage=require('webpage').create(), system=require(

相關推薦

Python爬蟲利器PhantomJS用法

前言 大家有沒有發現之前我們寫的爬蟲都有一個共性,就是隻能爬取單純的html程式碼,如果頁面是JS渲染的該怎麼辦呢?如果我們單純去分析一個個後臺的請求,手動去摸索JS渲染的到的一些結果,那簡直沒天理了。所以,我們需要有一些好用的工具來幫助我們像瀏覽器一樣渲染JS

Python爬蟲利器Selenium+PhantomJS系列入門

簡介 一直以來我們在使用Python的urllib2、httplib等通訊框架來抓取網頁,但是涉及到JavaScript渲染的頁面卻不能抓取,所以採用Web自動化測試工具Selenium,無介面瀏覽器PhantomJS來抓取JavaScript渲染的頁面,帶我

Python爬蟲利器Xpath語法與lxml庫的用法

blank color idt tab 一段 並且 .text rst 基本用法 前面我們介紹了 BeautifulSoup 的用法,這個已經是非常強大的庫了,不過還有一些比較流行的解析庫,例如 lxml,使用的是 Xpath 語法,同樣是效率比較高的解析方法。如果大家

Python爬蟲利器Requests庫的用法

前言 之前我們用了 urllib 庫,這個作為入門的工具還是不錯的,對了解一些爬蟲的基本理念,掌握爬蟲爬取的流程有所幫助。入門之後,我們就需要學習一些更加高階的內容和工具來方便我們的爬取。那麼這一節來簡單介紹一下 requests 庫的基本用法。 注:Py

Python爬蟲利器Selenium的用法

Selenium 是什麼?一句話,自動化測試工具。它支援各種瀏覽器,包括 Chrome,Safari,Firefox 等主流介面式瀏覽器,如果你在這些瀏覽器裡面安裝一個 Selenium 的外掛,那麼便可以方便地實現Web介面的測試。換句話說叫 Seleni

Python 爬蟲利器 Beautiful Soup 4 文件樹的搜尋

前面兩篇介紹的是 Beautiful Soup 4 的基本物件型別和文件樹的遍歷, 本篇介紹 Beautiful Soup 4 的文件搜尋 搜尋文件樹主要使用兩個方法 find() 和 find_all() find_all(): find_all 是用於搜尋節

Python爬蟲Selenium和PhantomJS系列十三

1,Selenium Selenium是一個Web的自動化測試工具,最初是為網站自動化測試而開發的,型別像我們玩遊戲用的按鍵精靈,可以按指定的命令自動操作,不同是Selenium 可以直接執行在瀏覽器上,它支援所有主流的瀏覽器(包括PhantomJS這些無介面

Python爬蟲利器:BeautifulSoup庫

環境 內容 python網絡 tag ret bsp 標準 requests for Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. Beautif

2017.08.10 Python爬蟲實戰爬蟲攻防

ebs 1-1 間隔 ima pic setting fin 數據 del 1.創建一般的爬蟲:一般來說,小於100次訪問的爬蟲都無須為此擔心 (1)以爬取美劇天堂為例,來源網頁:http://www.meijutt.com/new100.html,項目準備: scrapy

2017.08.10 Python爬蟲實戰爬蟲攻防篇

5.1 inux ice 一個 1.0 ninja 多網站 alt bject 1.封鎖user-agent破解: user-agent是瀏覽器的身份標識,網站就是通過user-agent來確定瀏覽器類型的。有很多網站會拒絕不符合一定標準的user-agent請求網頁,如果

Python爬蟲常用登錄(一) 思想

訪問 size 其他 驗證碼 方法 身份驗證 一定的 常用 加密 爬蟲主要目的是獲取數據,常見的數據可以直接訪問網頁或者抓包獲取,然後再解析即可. 一些較為隱私的數據則不會讓遊客身份的訪問者隨便看到,這個時候便需要登錄獲取. 一般獲取數據需要的是登錄後的cookie作為身份

python爬蟲學習路-遇錯筆記-1

sig packages ror caused 技術 bsp img exception mage 當在編寫爬蟲時同時開啟了Fidder解析工具時,訪問目標站點會遇到以下錯誤: File "C:\Users\litao\AppData\Local\Programs\P

python爬蟲scrapy如何同時執行多個scrapy爬行任務

還需 學習 lis 參數 文件名 其中 .project 自定義 com 背景:   剛開始學習scrapy爬蟲框架的時候,就在想如果我在服務器上執行一個爬蟲任務的話,還說的過去。但是我不能每個爬蟲任務就新建一個項目吧。例如我建立了一個知乎的爬行任務,但是我在這個爬行任務中

Python爬蟲利器:Beautiful Soup

處理 previous tag 得到 navi log 簡單 文本節點 pen Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫。使用它來處理HTML頁面就像JavaScript代碼操作HTML DOM樹一樣方便。官方中文文檔地址 1

python爬蟲scrapyrules的基本使用

highlight 目的 創建 true ans 滿足 topic hole auth Link Extractors Link Extractors 是那些目的僅僅是從網頁(scrapy.http.Response 對象)中抽取最終將會被follow鏈接的對象? Scra

C# 網絡爬蟲利器Html Agility Pack如何快速實現解析Html

mlp get 設計 navig send 介紹 sca 元素 對象 簡介   現在越來越多的場景需要我們使用網絡爬蟲,抓取相關數據便於我們使用,今天我們要講的主角Html Agility Pack是在爬取的過程當中,能夠高效的解析我們抓取到的html數據。 優勢   在.

python 爬蟲入門正則表達式 一

簡單 換行 find www. ever page oct search utf python 正則表達式知識點正則 常用符號. : 匹配任意字符,換行符除外* : 匹配前一個字符 0 次或者無限次? : 匹配前一個字符 0次或者1次.* : 貪心算法.*? :非貪心算

Python爬蟲-urllib的基本用法

quest resp lan roc 用法 rom handler baidu github from urllib import response,request,parse,error from http import cookiejar if __name__

Python 爬蟲入門爬取妹子圖

Python 爬蟲入門之爬取妹子圖 來源:李英傑  連結: https://segmentfault.com/a/1190000015798452   聽說你寫程式碼沒動力?本文就給你動力,爬取妹子圖。如果這也沒動力那就沒救了。   GitHub 地址:&

Python 爬蟲開發xpath使用

在進行爬蟲開發中,需要的頁面資訊進行解析處理,獲取到需要的關鍵資料。可以利用xpath進行對頁面的xml檔案進行解析處理,獲取到需要的關鍵資料。XPath使用:XPath 可用來在 XML 文件中對元素和屬性進行遍歷.from lxml import etreeimport urllib2req = urll