【问题标题】:Phantomjs works but is very slowPhantomjs 可以工作,但速度很慢
【发布时间】:2021-01-28 16:01:38
【问题描述】:

我正在尝试使用 PhantomJS 截取网页的屏幕截图。具体来说,我使用的是从this 示例中捕获espn.com 的示例。我的代码如下所示:

var page = new WebPage(); 
    page.open('http://www.espn.com', function (status) {
    page.render('fb.png');
    phantom.exit();
});

然后我使用终端或命令提示符进入我的 PhantomJS 目录并运行:

phantomjs shotty.js

一切运行良好,但完成输出图像需要 6-8 秒。这正常吗?是否有更快的方法来完成此操作,以便在一秒钟或更短的时间内完成?

我使用的是 CentOS 和 Windows 7。两个机器都有 8GB 的​​ RAM,3.2 GHz 的 CPU,我在 speedtest.net 上的速度下降了 22Mbp/s,上升了 1Mbp/s

【问题讨论】:

  • 在我的桌面浏览器中渲染页面大约需要 7 秒;所以是的,这看起来很正常。
  • 感谢您的验证!
  • 禁用 IPV6 并在 Internet Explorer 中“单击 Internet 选项”=> 单击“连接”=> 单击“局域网设置”=>取消选中“自动检测设置”
  • 截屏速度很快,但启动实际过程很慢。

标签: javascript phantomjs webpage-screenshot


【解决方案1】:

嗯,在我的例子中,页面正在等待一些 GET 请求并且无法到达请求的服务器,并且它一直等待很长时间。我只有在使用远程调试器选项时才能弄清楚。

phantomjs --remote-debugger-port=9000 loadspeed.js <some_url>

loadspeed.js 文件中添加以下代码:

page.onResourceRequested = function (req) {
    console.log('requested: ' + JSON.stringify(req, undefined, 4));
};

page.onResourceReceived = function (res) {
    console.log('received: ' + JSON.stringify(res, undefined, 4));
};

然后在任何 webkit 浏览器(safari/chrome)中加载 localhost:9000 并查看控制台日志,我可以发现它正在等待一些无法访问的请求很长时间。

绕过这个 - 通过将以下内容添加到相同的 loadspeed.js 文件中来减少超时:

page.settings.resourceTimeout = 3000; //in milliseconds

然后事情就很快了。希望这会有所帮助

【讨论】:

  • +1 我想补充一点,通过控制超时,您可以跳过等待整个页面加载并使用部分页面。
  • 这是一个很大的帮助。 +1
  • 这不是一个完整且有效的示例,因此没有多大帮助。
  • 这非常有帮助。谢谢你。 @Myz,这是一个完整的工作示例: var page = require('webpage').create(), address = 'your url'; page.settings.resourceTimeout = 3000; page.open(menuURL, function(status) { if (status === 'success') { /*这里是成功代码*/ } }
  • 如何使用远程调试器?它向我显示了一个名为 loadspeed.js 的链接,然后当我单击它时,会出现一个类似 F12 的页面,但其中没有任何数据。
【解决方案2】:

是的,这很正常。当您尝试渲染时,PhantonJS 仍将等待page.open 事件触发load 事件以表示整个 DOM 已加载。

看看当我在我的系统上本地加载espn.com 时会发生什么。 DOMContentLoaded 大约需要 2 秒才能完成,然后 ready 事件需要大约 7 秒才能触发。

【讨论】:

  • 操作本身应该很快,具体取决于页面。慢的是phantomjs.exe的进程创建!
【解决方案3】:

我不认为以下会起作用,但对我来说(在 Windows 上):

打开 Internet Explorer > Internet 选项 > 连接 > LAN 设置并禁用“自动检测设置”

原帖:https://plus.google.com/+MatthiasG%C3%B6tzke/posts/9v9BMCJj2k6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多