分享抓取网页截图的一些心得

最近由于一个活儿因此要完成抓取网页截图这个需求,我研究了几个工具,就向你们分享一下咱们的方案了。假若有什么错误和更好的提议,欢迎拍砖。

 由于支付宝已经作过相似的功能,因此我就咨询了@天材他们的方案,感谢他提供了宝贵的资料做参考。

第一个方案:(直接用命令截图,再用ImageMagic裁剪)
伪代码以下:
​(1)截图指令[ " + "xvfb-run.sh --auto-servernum CutyCapt --delay=" + delay+ " --max-wait=" + maxWait + " --url=" + url + " --out=" + filePath + "]
(2)截取指定图片指定大小指令[" + "convertcrop " + cutWidth + "x" + cutHight + "+" + cutStartX + "+" + cutStartY + " " + filePath + " " + filePath + "]node

但我以为第一个方案彷佛有点别扭,并且截图的命令也不知道能不能支持多个平台(由于公司只配置了一台笔记本给我,win系统的),因此我就去探讨另一个方案。

第二个方案:(PhantomJs + NodeJs + ImageMagick)
方案分析:
请输入图片描述linux

理由​:
PhantomJs是支持各个平台的,并且用起来很方便。细心的同窗能够看到它安装的脚本,是会根据不一样平台下载不一样的版本。git

if (process.platform === 'linux' && process.arch === 'x64') {
  downloadUrl += 'linux-x86_64.tar.bz2'
} else if (process.platform === 'linux') {
  downloadUrl += 'linux-i686.tar.bz2'
} else if (process.platform === 'darwin') {
  downloadUrl += 'macosx.zip'
} else if (process.platform === 'win32') {
  downloadUrl += 'windows.zip'
} else {
  console.log('Unexpected platform or architecture:', process.platform, process.arch)
  exit(1)
}

​步骤和注意点:
​[ 1 ] 安装phantomjsgithub

npm install phantomjs@1.9.2-1

这个版本比较稳定,最好不要下最新版本,我以前弄了很久都安装不成功,就上github看里面的Issue,做者也建议安装1.9.2-1(特别在win下)
​[ 2 ] 安装ImageMagic和gm模块
​根据做者描述GraphicsMagick and ImageMagick for node,因此使用gm的时候注意设置是ImageMagick的模式。web

var gm = require('gm').subClass({ imageMagick: true });

​使用方法:(里面的连接都有详细解释,我就不展开了)
​{1}phantomjs模块的使用方法: https://www.npmjs.org/package/phantomjs
​{2}phantomjs的API: http://phantomjs.org/
​{3}gm模块的使用方法: https://www.npmjs.org/package/gmmacos

性能测试:
​本机:
CPU:i5-3230M 2.60GHz
内存:​8G
​截图淘宝首页花费时间:20.0+秒 (山穷水尽疑无路)npm

​服务器:
​CPU:16 Intel(R) Xeon(R) CPU L5630 @ 2.13GHz
​内存:49552672K(约等于47.25G)
​​截图淘宝首页花费时间:1.0+秒 (柳暗花明又一村)segmentfault

​第三个方案:(使用webkit2png工具)
​今天刚恰好跟一位腾讯的小伙伴聊天,刚恰好聊起这事儿,他也刚恰好作了跟我类似的东西,但他使用的是webkit2png,因此就互相交流一下了。他是使用webkit2png的,webkit2png是一个命令行工具,其实跟phantomjs也很相似,我查了下也是支持各个平台的。
@TQ博客: http://targetkiller.net/preview-mac-in-win/
具体请移步到文档:http://www.paulhammond.org/webkit2png/windows


微博:@任重致远-MR梁广彬
英文名:jambinliang
花名:无唯服务器

2014/2/23

相关文章
相关标签/搜索