【问题标题】:CasperJS/PhantomJS much slower than CurlCasperJS/PhantomJS 比 Curl 慢得多
【发布时间】:2013-04-07 06:06:51
【问题描述】:

当我尝试curl www.yelp.com 时,需要 1.1 秒。但是使用 CasperJS 检索页面需要一分钟!

这正常吗?我如何找出使 casper/phantom 变慢的原因?我怀疑 casper 没有遵循一些 HTTP 重定向?

var casper = require('casper').create();
var url = 'http://www.yelp.com';

casper.start(url);
casper.then(function() {
    console.log(  this.getHTML() );
    this.exit();
});

casper.run();

【问题讨论】:

    标签: php web-scraping screen-scraping phantomjs casperjs


    【解决方案1】:

    你在 Windows 上吗?如果是,则在使用自动代理时存在神秘的网络问题。有关详细信息,请参阅发行说明:http://phantomjs.org/release-1.9.html

    一般来说,尝试分析网络请求和响应。跟踪网络流量的一种非常简单的方法:

    page.onResourceRequested = function (request) {
      console.log('Request ' + JSON.stringify(request, undefined, 4));
    };
    page.onResourceReceived = function (response) {
      console.log('Receive ' + JSON.stringify(response, undefined, 4));
    };
    

    如果您需要时间等,您需要进一步调整它。阅读有关此Network Monitoring 功能的文档。

    【讨论】:

    • 感谢您的洞察力。我已经用 netsniff.js 的 HAR 输出更新了 questoin。似乎前 2 个耗时 30 秒的 .js 文件来自 Google,而第 3 个 .js 文件是托管在 GoogleCDN 上的 jQuery.min.js。知道为什么这些 .js 文件这么慢吗?
    • 这可能需要提出另一个问题:PhantomJS 能否缓存这些常见的 js 文件并与未来运行的 Phantom 实例共享?
    • 您是否多次运行它?如果每次总是慢到 30 秒,恐怕只有低级网络跟踪(例如 Wireshark)会揭示一些提示。
    猜你喜欢
    • 2020-05-12
    • 1970-01-01
    • 2017-03-13
    • 2012-12-15
    • 2011-10-27
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多