我試圖用phantomjs獲取頁面內容。在官方網站上的很多例子中(例如:https://github.com/ariya/phantomjs/blob/master/examples/imagebin.js)使用了page.open()函數。
在我的腳本中,雖然它似乎沒有工作。我使用反射來查看頁面對象的所有已定義方法:phantomjs page.open()似乎不存在
for (var prop in page) {
if (typeof page[prop] == 'function') {
log("method in page: " + prop);
}
}
並且open()方法未顯示。 (關閉(),渲染(),等等都出現了)
還當我試圖執行一個腳本:
// include plugins
var system = require('system');
var fileSystem = require('fs');
var page = require('webpage').create();
// global errorhandler
phantom.onError = function(msg, trace) {
console.log("ERROR!!!!! \n" + msg);
phantom.exit(1);
};
// read json input and remove single outer quotes if set
var jsonin = system.args[1];
if (jsonin.charAt(0) == "'") {
jsonin = jsonin.substr(1, jsonin.length - 2);
}
// make object of json
var data = eval('(' + jsonin + ')');
// optional url
var url = system.args[2];
// transfer file
var dest = system.args[3];
console.log("systemargs[1]: data -> " + data);
console.log("systemargs[2]: url -> " + url);
console.log("systemargs[3]: dest -> " + dest);
openRoot();
/*
* open site
*/
function openRoot() {
page.onConsoleMessage = function(msg) {
console.log('INNER ' + msg);
};
page.open(url, function(status) {
if (status === "success") {
if (loadCount == 0) { // only initial open
console.log("opened successfully.");
page.injectJs("./jquery-1.8.3.min.js");
} else {
console.log("page open error.");
console.log('skip refresh ' + loadCount);
}
} else {
console.log("error opening: " + status);
}
});
}
phantom.exit(0);
它不執行open函數。日誌不會在open()方法中顯示任何消息。
任何意見,我可能做錯了將不勝感激。如果需要其他信息,請告訴我。
問候,
亞歷
編輯:
線
console.log(typeof (page.open));
輸出:function
這不是我所期待的,因爲以前我寫的日誌,其中open
沒有方法列表存在。嗯。