PhantomJS是什么?
PhantomJS是一個基于webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能,使用webkit來編譯解釋執(zhí)行JavaScript代碼。任何你可以在基于webkit瀏覽器做的事情,它都能做到。它不僅是個隱形的瀏覽器,提供了諸如CSS選擇器、支持Web標準、DOM操作、JSON、HTML5、Canvas、SVG等,同時也提供了處理文件I/O的操作,從而使你可以向操作系統(tǒng)讀寫文件等。PhantomJS的用處可謂非常廣泛,諸如網絡監(jiān)測、網頁截屏、無需瀏覽器的 Web 測試、頁面訪問自動化等。
PhantomJS官方地址:http://phantomjs.org/。
PhantomJS官方API:http://phantomjs.org/api/。
PhantomJS官方示例:http://phantomjs.org/examples/。
PhantomJS GitHub:https://github.com/ariya/phantomjs/
PhantomJS下載與安裝
大家可根據自己的系統(tǒng)運行環(huán)境來安裝相應的版本. 這里我以Window7來作演示.

下載完成后解壓文件,建議為方便使用,單獨放在一個文件夾里,如放在D:\workspace\phantomjs里。
到這里,你已經成功下載安裝好PhantomJS了。那么,打開D:\workspace\phantomjs\bin文件夾,雙擊運行phantomjs.exe,出現如下界面,那么你就可以運行JS代碼了。

可以考慮將D:\workspace\phantomjs\bin路徑配置到環(huán)境變量中.方便日后使用
第一個PhantomJS小程序
// demo.js
var page = require('webpage').create();
phantom.cutputEncoding = 'gbk';
page.open("http://www.itdecent.cn", function(status) {
if(status === "success") {
page.render("jianshu.png");
} else {
console.log("Page failed to load.");
};
phantom.exit();
});
然后在cmd命令行中, 切換到demo.js所有目錄運行demo.js.

demo.js會將抓取到頁面的截圖保存到當前頁面
如上圖所示的 jianshu.png.
PhantomJS核心API
- webpage:它的作用主要是提供了一套可以訪問和操作web文檔的核心方法,包括操作DOM、事件捕獲、用戶事件模擬等等。
- system:該模塊提供了一些與操作系統(tǒng)相關的接口,例如訪問操作系統(tǒng)信息、訪問系統(tǒng)環(huán)境變量、接受命令行參數等等與程序執(zhí)行相關的系統(tǒng)信息。
- fs:即FileSystem。熟悉NodeJS的朋友都知道,NodeJS也內建了相關的核心模塊。fs提供了執(zhí)行文件I/O操作的標準接口,如讀寫文件、刪除文件等。它使得你持久化一些文件(如logfile等)變得非常容易。
- webserver:如其名字一樣,你可以基于它來實現自己的webserver,用來處理請求并且執(zhí)行PhantomJS代碼等。
其它一些配置信息,執(zhí)行PhantomJS的命令格式如下
phantomjs [switches] [options] [script] [argument [argument [...]]]
打開debug模式(該模式用于開發(fā),可提供必要提示信息):
phantomjs --debug=yes demo.js
設置cookie路徑:
phantomjs --cookie-file=cookie.txt demo.js