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。

posted @ 2012-06-06 16:16  xin478  阅读(777)  评论(0编辑  收藏  举报