这对我有用。
// var webpage = require('webpage');
var page = require('webpage').create();
var fs = require('fs');
var system = require('system');
var address = "https://jquery.org";
console.log("Opening page : " + address);
// var page = webpage.create();
page.open(address, function(status) {
console.log('Status? '+status);
if ( status !== 'success') {
console.log("Failed to load the address...");
phantom.exit();
}
var f = fs.open('parse.txt', 'a');
for (var x = 0; x<=15; x++ ) {
var href = page.evaluate(function(x) {
return $('a').eq(x).attr('href');
}, x);
console.log(href);
f.write(href + '\r\n');
}
f.close();
phantom.exit();
});
一些笔记。
在第一个示例中,您不需要从函数 x 中删除“x”,您需要将 x 传递给 page.evaluate 作为包含要传递给函数的值的变量,一旦它在浏览器中。
IE
page.evaluate(function(x) {...}, x);
代替
page.evaluate(function(x){...}, hrefs)
绝对不是
page.evaluate(function() { return x; })
鉴于理解完成第二个示例的适当方法是:
var array = page.evaluate(function() {
var result = [];
for (var z = 0; z<=15; z++) {
result.push($('.login').eq(z).attr('href'));
}
return result;
});