Phantomjs是一個基於webkit的服務器端JavaScirpt API。它全面支持web而不需要瀏覽器支持,並且原生支持web的各種標准:DOM處理,CSS選擇器,JSON,Canvas和SVG。可以用於頁面自動化、網絡檢測、網頁截屏、無界面測試等。
1、使用
新建一個hi.js文件,里面寫入js腳本,並且以phantom.exit();結尾, 執行DOS命令:phantomjs hi.js即可執行文件內腳本內容。
2、參數處理
參考phantomjs安裝目錄下examples中的arguments.js,DOS命令:phantomjs examples/arguments.js foo bar baz
它將輸出 :
0: foo
1: bar
2: baz
3、頁面截圖
參考代碼(將請求www.baidu.com網站並將截圖保存成baidu.png):
var page = require('webpage').create();
page.open('http://www.baidu.com', function () {
page.render('html/baidu.png');
phantom.exit();
});
4、Cookie處理
var page = require('webpage').create();
var fs = require('fs');
phantom.addCookie({
'name' : 'province',
'value': 'provinceName%22%3A%22%u5317%u4EAC',
'domain': 'baidu.com'
});
phantom.addCookie({
'name' : 'addrDetail',
'value': '%7B%22detail%22%3A%22%u5317%u4EAC%22%2C%22detailId%22%3A2%2C%22detailCode%22%3A110000%7D',
'domain': 'baidu.com'
});
page.open('http://www.baidu.com', function(status){
if(status !== 'success'){
console.log('Unable to post!');
}else{ // 將頁面保存成本地文件,並將所有script腳本替換為空字符,
fs.write('html/baidu.html',page.content.replace(/<script\b[^>]*>([\s\S]*?)<\/script>/gm,""),'w');
}
phantom.exit();
});
5、文件處理
var filePath = 'test.js';//文件路徑
var fs = require("fs");
//判斷文件是否存在,是文件還是文件夾
if( fs.exists(filePath) && fs.isFile(filePath) ) {
var ins = fs.open(filePath, 'r');//打開文件
while(!ins.atEnd()) {//循環讀取文件內容
var buffer = ins.readLine();//一行行的讀取
console.log(buffer);
}
}