linux下抓取网页截图
项目需要抓取指定网址截图的功能,linux下正好有这样的工具,最后选定用phantomjs,这是基于Javascript驱动的命令行webkit引擎,轻量级,安装简单,开发快速,渲染速度较快的无界面的webkit浏览器
更多介绍可以参考 http://code.google.com/p/phantomjs
到http://code.google.com/p/phantomjs/downloads/list 下载源码包,我下的是phantomjs-1.5.0-source.tar.gz
# wget http://code.google.com/p/phantomjs/downloads/detail?name=phantomjs-1.5.0-source.tar.gz&can=2&q=
# cd phantomjs-1.5.0/
# ./build.sh
漫长等待后,编译结束。这个不需要在额外安装qt之类的,比较方便。
新建一个js脚本,内容如下:
var page = new WebPage(),
address, output, size;
if (phantom.args.length < 2 || phantom.args.length > 3) {
console.log('Usage: rasterize.js URL filename');
phantom.exit();} else {
address = phantom.args[0];
output = phantom.args[1];
page.viewportSize = { width: 600, height: 600 };
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 200);
}
});}
保存为snap.js
需要截图的时候,执行如下命令:
# ./bin/phantomjs snap.js http://qq.com qq.com.png
即生成了截图文件 qq.com.png。
目前,phantomjs还是需要x-server的依赖才可以运行的,因此需要安装xfvb。