【问题标题】:Check/Log how much bandwidth PhantomJS/CasperJS used检查/记录 PhantomJS/CasperJS 使用了多少带宽
【发布时间】:2013-01-03 17:01:04
【问题描述】:

是否可以检查/记录在 PhantomJs/CasperJS 每次运行期间传输了多少数据?

每个 Phantom/Casper 实例都有一个 instance_id 分配给它(由启动该实例的 PHP 函数)。运行完成后,传输的数据量和instance_id 必须插入到 MySQL 数据库中,可能通过生成实例的 PHP 函数。这样可以记录单个 phantomjs 运行的带宽利用率。

可以运行许多幻象/casper 实例,每个实例持续一两分钟。

【问题讨论】:

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


【解决方案1】:

在尝试捕获数据时,最简单、最准确的方法是使收集器和发射器尽可能靠近。在这种情况下,如果 phantomjs 可以捕获您需要的数据并将其发送回您的 PHP 函数以将其关联到 instance_id 并进行数据库交互,那将是理想的。事实证明它可以(至少部分)。

这是一种方法:

var page = require('webpage').create();
var bytesReceived = 0;

page.onResourceReceived = function (res) {
    if (res.bodySize) {
        bytesReceived += res.bodySize;
    }
};

page.open("http://www.google.com", function (status) {
    console.log(bytesReceived);
    phantom.exit();
});

这会捕获检索到的所有资源的大小,将它们相加,然后将结果输出到您的 PHP 代码可以使用的标准输出中。这不包括标头的大小或任何 POST 活动。根据您的应用程序,这可能就足够了。如果没有,那么希望这能给你一个很好的起点。

【讨论】:

  • 这不会也不能准确总结传输的大小,因为 gzip 压缩不计算在内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多