昨天(2013/08/12)在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给出来。 以前记得google搜索提供站点缩略图,那时候觉得好神奇,但是没有花时间去做深入的调研。昨天又遇到了,那就顺便调研下吧。
才开始找到了wkhtmltopdf这款工具,这款工具的地址是:
XXXXXXXXXXXXXXXXXXXXXX/p/wkhtmltopdf/。 这款工具集下有一个wkhtmltoimage,可以用来生成站点快照。才开始在基于xen的虚拟机上跑,操作系统是centos,各种问题,折腾到最后实在没精力折腾了。
查到后来,看到老外一篇文章,发现wkhtmltoimage对于运行xen虚拟机的系统支持的并不好,具体情况可以参见这篇文章:
XXXXXXXXXXXXXXXXXXXXXXt/dev/wkhtmltopdf-wkhtmltoimage-x-centos-x-xen-segfault-mania。
放弃了wkhtmltoimage,继续找到了phantomjs和slimerjs,两款都是服务器端的js,简单说来,都是封装了浏览器解析引擎,不同是phantomjs封装的webkti,slimerjs封装的是Gecko(firefox)。 权衡利弊,决定研究下phantomjs,于是就用phantomjs实现了网站快照生成。phantomjs的项目地址是:
XXXXXXXXXXXXXXXXXXXX/代码涉及两个部分,一个是设计业务的XXXXXXXXp,另一个是生成快照的js脚本snapshot.js。代码比较简单,仅仅是实现了功能,没有做过多的修饰。代码分别如下所示:01
var page = require('webpage').create();
02
var args = require('system').args;
03
04
var url = args[1];
05
var filename = args[2];
06
07
page.open(url, function () {
08
XXXXXXXnder(filename);09
phantom.exit();
10
});
转自 开源中国 萌龙 发布于 2013年08月13日 15时