【发布时间】:2015-11-19 12:18:16
【问题描述】:
我正在寻找一种方法来在每次更改时截取长网页的屏幕截图。我想为此使用 Node.js。我的问题是关于如何用图像呈现整个页面并将其保存到磁盘和图像文件。
网页上的大多数图片都是延迟加载的。所以我想我需要先向下滚动整个页面,然后再进行屏幕截图。
我尝试了不同的工具:
- casperjs
- node-webshot
- phantomjs
所有这些似乎都太复杂了,如果不是不可能的话,甚至无法安装。我没有成功。
casperjs 似乎是一个非常不错的选择,但我无法让它在 node.js 中工作。它一直在抱怨,casper.start() 不是一个有效的方法......
我与 node-webshot 最接近,但我没有设法向下滚动页面。
这是我目前的代码:
var webshot = require('webshot');
var options = {
shotSize: {
height: 'all',
streamType: 'jpg'
}
};
webshot('www.xx.com', 'xx.com.jpg', options, function(err) {
// screen shot saved to 'xx.com.jpg'
});
顺便说一句,我正在 Mac 上开发。完成的 Node 应用程序将位于 linux 服务器上。
感谢任何cmets或经验!
【问题讨论】:
-
CasperJS 在 PhantomJS 内部运行,而 PhantomJS 又具有与 node.js 不同的执行环境。您不能直接在节点中运行 PhantomJS/CasperJS 脚本。您要么需要 (1) 通过 child_process 执行 CasperJS 进程,要么 (2) 使用像 Spooky.js 这样的库(注意三种不同的上下文)。
标签: javascript node.js phantomjs casperjs