address = system.args[1];//獲得命令行第二個參數 ,也就是指定要加載的頁面地址,接下來會用到
var page = require('webpage').create();
var url = address;
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to post!');
} else {
var encodings = ["euc-jp", "sjis", "utf8", "System"];//這一步是用來測試輸出的編碼格式,選擇合適的編碼格式很重要,不然你抓取下來的頁面會亂碼o(╯□╰)o,給出的幾個編碼格式是官網上的例子,根據具體需要自己去調整。
for (var i = 3; i < encodings.length; i++) {//我這裏只要一種編碼就OK啦
phantom.outputEncoding = encodings[i];
console.log(phantom.outputEncoding+page.content);//最後返回webkit加載之後的頁面內容
}
}
phantom.exit();
});
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class getContent {
public static String getAjaxCotnent(String url) throws IOException {
// 調用命令行運行phantomjs來執行s.js文件,這裏的路徑需要寫全,否則是沒有辦法運行的,具體原因就不去考察了
// 通過此方法返回的就是把AJAX頁面完全加載之後的瀏覽器的內容,以字符串的形式返回
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("d:/phantomjs/phantomjs.exe d:/phantomjs/s.js "+url);
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuffer sbf = new StringBuffer();
String tmp = "";
while((tmp = br.readLine())!=null){
sbf.append(tmp);
}
//System.out.println(sbf.toString());
return sbf.toString();
}
}