【发布时间】:2016-02-18 04:40:28
【问题描述】:
我使用 phantomjs 2.1.1,但有些事情让我很困扰。 这是我用来抓取 url 的一段代码,网站的 html 被写入 output.html 文件
page = require('webpage').create();
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
window.setTimeout(function () {
var content = page.content;
fs.write("output.html", content, 'w');
}, 40000); //40 seconds timeout
}
});
现在,我也需要刮掉它的分页。下一页由 javascript 函数 page(2) 加载;或第 (3) 页;我尝试使用
来完成它 var pageinationOutput = page.evaluate(function (s) {
page(2);
});
console.log(pageinationOutput); // I need the output made by the `page(2);` call.
page = require('webpage').create();
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
window.setTimeout(function () {
var content = page.content;
fs.write("output.html", content, 'w');
}, 40000); //40 seconds timeout
}
});
但我没有得到任何输出。 如何在页面加载完成后执行 JavaScript 函数并获取 javascript exec 后网站内容发生的新更改,在这种情况下,网站将调用下一页(使用 ajax)在第(2)页之后;方法调用。
提前致谢!
【问题讨论】:
标签: javascript php web-scraping phantomjs casperjs