如何在phantomjs中加载html很快返回html?

时间:2017-02-06 18:19:05

标签: javascript phantomjs

我正在使用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而不会延迟加载外部链接?

2 个答案:

答案 0 :(得分:0)

我相信你在等待page.open请求返回成功然后是evaluate()方法,这将花费时间。也许你可以尝试使用evaluateAsync()。

evaluateAsync():在网页的上下文中评估给定的函数,而不阻止当前的执行。函数立即返回,没有返回值。这对于异步运行某些脚本非常有用

http://phantomjs.org/api/webpage/method/evaluate-async.html

答案 1 :(得分:0)

不确定您使用的是哪种自动化脚本,因此将指向vanilla PhantomJS解决方案。

onResourceRequested允许中止对资源的请求或将其重定向到其他位置。

来自官方示例«Load url without css»:

h = 1