我正在使用PhantomJS加载页面,每个请求大约需要20秒,所以我想加快它的速度。
browser.createPage((err, page) => {
page.set('settings', {
userAgent: random_ua.generate(),
javascriptEnabled: true,
loadImages: false
});
return page.open(url, (err,status) => {
if (err) {
console.log('Error:', err);
onError();
}
if (status == 'success') {
page.evaluate(function () {
return document.body.innerHTML.trim();
}, (err,result) => {
console.log('Execution time: ' + ((new Date).getTime() - time) / 1000 + 's');
browser.exit();
resolve(result)
});
} else {
console.log('Status:', status);
onError();
}
});
}
正如我所见,它等待完全加载页面和外部资源(css,js等)。
如何在加载后立即解析html而不会延迟加载外部链接?
答案 0 :(得分:0)
我相信你在等待page.open请求返回成功然后是evaluate()方法,这将花费时间。也许你可以尝试使用evaluateAsync()。
evaluateAsync():在网页的上下文中评估给定的函数,而不阻止当前的执行。函数立即返回,没有返回值。这对于异步运行某些脚本非常有用
答案 1 :(得分:0)
不确定您使用的是哪种自动化脚本,因此将指向vanilla PhantomJS解决方案。
onResourceRequested允许中止对资源的请求或将其重定向到其他位置。
来自官方示例«Load url without css»:
h = 1