之前截图用的html2images,后来看到一个phantomjs,转发留存一下。
转发自:http://marshal.easymorse.com/archives/4769
以前,我的同事也做过一个方案,使用cutycapt,《UBUNTU SERVER 11.10利用CUTYCAPT实现网页截图》。
在实际使用中发现速度比较慢。
我用phantomjs又做了个方案。速度有明显提高:
cutycapt方案,截取百度,3.8s,截取谷歌,4.8s
phantomjs方案,截取百度,0.8s,截取谷歌,1.4s
这是用它截取的百度首页:
下面说一下操作步骤。
首先是安装xvfb,我使用ubuntu server 11.10,安装命令:
sudo apt-get install xvfb gtk2-engines-pixbuf xfonts-100dpi x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
然后,可以测试一下xvfb的运行:
Xvfb -fp /usr/share/fonts/X11/misc/ :0 -screen 0 1024x768x24 &
为什么要加fp参数,可以参考使用Xvfb问题的解决。
如果没有报错,xvfb就充当xserver跑在后台了。
正式使用的时候,要做成守护进程,创建一个脚本,/etc/init.d/Xvfb:
#! /bin/sh
### BEGIN INIT INFO
# Provides: Xvfb
# Required-Start: $local_fs $remote_fs
# Required-Stop:
# X-Start-Before:
# Default-Start: 2 3 4 5
# Default-Stop:
### END INIT INFO
N=/etc/init.d/Xvfb
set -e
case “$1″ in
start)
Xvfb :0 -screen 0 1024x768x24 &
;;
stop|reload|restart|force-reload)
;;
*)
echo “Usage: $N {start|stop|restart|force-reload}” >&2exit 1
;;
esac
exit 0
ubuntu 11.10没有phantomjs的包可以装,需要自行编译安装,安装需要的包是:
sudo apt-get install libqt4-dev libqtwebkit-dev qt4-qmake python-qt4 git build-essential
通过git下载phantomjs的源代码:
git clone git://github.com/ariya/phantomjs.git
可以这样看到所有的版本:
git tag
我使用的代码主干,看issues里的对话,应该接近1.5版本了。如果你需要稳定版本,可以切换到该版本下:
git checkout 1.4.1
编译和安装:
qmake-qt4
make
sudo cp bin/phantomjs /usr/local/bin/
运行一下,看是否能得到截图:
DISPLAY=:0 phantomjs ~/phantomjs/examples/rasterize.js http://www.baidu.com screenshot.png
这时候还会有个问题,中文都显示乱码,因为ubuntu默认未安装中文字体。
可找合适的中文字体,上传到该目录下:
/usr/share/fonts/
然后再执行:
fc-cache
这样中文字体就生效了。
分享到:
相关推荐
windows版: 1、下载phantomjs,解压到某个目录。...2、将XXX\phantomjs\bin配置到环境变量中(方便使用)。 3、cmd下调用如下命令:oeepdf "url" "output" ,即可生产pdf文件。 url:网页地址 output:pdf输出路径
java调用phantomJs进行网页截图源码,有需要的朋友自行下载
phantomjs一款可以自己设置分辨率的网页截图js插件,如果截取网页内网过于太大的话,phantomjs是一款不错的软件,而且经本人测试,效果比canvas功能强大
2、将XXX\phantomjs\bin配置到环境变量中(方便使用)。 3、cmd下调用如下命令:oeepdf "url" "output" ,即可生产pdf文件。 url:网页地址 output:pdf输出路径 ps:如果页面有滚动条显示不全,可以调整pdf\pdf....
利用phantomjs实现在windows下,对网页的截图,并且包含简单说明
使用 phantomjs 和 im4java 生成网页缩略图,切图用的是ImageMagick,附送im4java调用ImageMagick处理图片代码,包括剪切、调整大小、调整到指定比例大小不足部分补白边。包含 phantomjs 包,不包含ImageMagick。
java使用phantomjs把echarts转图片 静态资源
无界面的浏览器。PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情。
PhantomJS在Web自动化测试中的应用.rar
PhantomJS在Web自动化测试中的应用.pdf
screenshot-as-a-service, 由 node.js 和phantomjs提供的网站截图服务 屏幕截图作为服务通过 Express 和 PhantomJS简单的屏幕截图。 来自屏幕截图应用程序 。设置首先安装,然后克隆这里 repo 并安装: $ npm ...
PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行...PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。
以下是一个使用PhantomJS截取网页截图的示例代码: var page = require('webpage').create(); page.open('http://www.example.com', function() { page.render('example.png'); phantom.exit(); }); 这个代码会...
PhantomjsFetcher, 使用phantomjs到 mock 浏览器的python web提取器 PhantomjsFetcher使用phantomjs和 Tornado的python web提取器,用于 mock 浏览器。在使用前使用 安装 phantomjs插件,并从以下位置开始:$ ...
使用c#对京东搜索页进行价格,名称爬取,使用AngleSharp+Selenium.PhantomJS
screenshot-service, 使用phantomJS无头浏览器作为服务的屏幕截图 屏幕截图服务使用phantomJS无头浏览器作为服务的屏幕截图这是一个小工具,它使得web服务能够呈现任何页面的屏幕截图。 归功于 @trevordixon,他的...
PhantomJS 工具将网页转换为屏幕截图。 这需要 PhantomJS 项目( 或 )。 获得 phantomjs.exe 后,只需使用以下参数运行 JavaScript 文件: Usage: phantomjs.exe --ignore-ssl-errors=yes web2image.js <URL> ...
使用headless Chrome作为自动化截图工具(替代PhantomJS)
PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行...PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等
PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行...PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。