我是PhantomJS的新手。我想加載一個頁面,刮掉它的鏈接,然後按順序打開每個頁面,每次打開一個頁面,甚至可能在每個請求之間有一段延遲。我很難讓一個人在另一個之後開火,所以我想也許我可以使用承諾來解決這個問題,但我不認爲Node庫可以與Phantom一起工作。我到目前爲止看到的每個例子都會打開一個頁面,然後退出。PhantomJS的Promise框架?
下面是我有:
var page = require('webpage').create();
page.open('http://example.com/secretpage', function(status) {
console.log(status);
if(status !== 'success') {
console.log('Unable to access network');
} else {
var links = page.evaluate(function() {
var nodes = [];
var matches = document.querySelectorAll('.profile > a');
for(var i = 0; i < matches.length; ++i) {
nodes.push(matches[i].href);
}
return nodes;
});
links.forEach(function(link) {
console.log(link);
page.open(link, function(status) { // <---- tries opening every page at once
console.log(status);
var name = page.evaluate(function() {
return document.getElementById('username').innerHTML;
});
console.log(name);
page.render('profiles/'+name + '.png');
});
});
}
// phantom.exit();
});
有沒有一種方法,我可以按順序打開每一個環節?
當我嘗試做phantom.injectJs('async.js')時,我得到一個錯誤:ReferenceError:無法找到變量:出口....有關如何AMD是在async.js中實現的嗎?這種情況發生在phantomjs 1.9.8和phantomjs 2 –