之前截图用的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
这样中文字体就生效了。
分享到:
相关推荐
这个工具在Web自动化、网页抓取、页面渲染等方面有着广泛的应用。在这个场景下,我们讨论的是PhantomJS针对Windows和Linux平台的不同安装版本。 1. **PhantomJS简介** PhantomJS是一个开源项目,它提供了对Web标准...
PhantomJS 工具将网页转换为屏幕截图。 这需要 PhantomJS 项目( 或 )。 获得 phantomjs.exe 后,只需使用以下参数运行 JavaScript 文件: Usage: phantomjs.exe --ignore-ssl-errors=yes web2image.js <URL> ...
这个“Phantomjs 2.1.1-windows版”是专为Windows操作系统设计的版本,适用于那些在Windows环境下进行JavaScript驱动的Web页面处理的开发者。 PhantomJS的核心特性包括: 1. **无头浏览器**:PhantomJS不依赖任何...
2. **JavaScript API**:PhantomJS提供了全面的JavaScript API,允许开发者控制网页的加载、执行JavaScript、操作DOM、捕获页面截图、甚至模拟用户输入。 3. **网页自动化**:你可以使用PhantomJS来自动化各种...
此外,PhantomJS集成了WebPage对象,这是一个完整的浏览器窗口,可以加载和渲染网页,并提供了丰富的API供开发者使用。 安装"phantomjs-2.1.1-windows.rar"后,你需要解压文件,通常会得到一个名为"phantomjs.exe...
4. **屏幕截图和PDF导出**:PhantomJS可以方便地生成网页的截图或PDF文档,这对于网页设计验证、自动化报告生成等场景非常有用。 5. **网络监控**:通过内置的WebInspector工具,可以调试和分析网络请求,查看DOM...
4. **屏幕截图和PDF生成**:PhantomJS可以方便地生成网页的截图或导出为PDF,这对于网页设计的预览和文档生成非常有帮助。 5. **网络监控**:它能记录页面加载过程中的网络请求,包括HTTP/HTTPS请求,这对于调试和...
这款工具特别适用于进行网页抓取、自动化测试、屏幕截图以及页面渲染等功能。 PhantomJS主要面向开发人员,特别是那些需要进行前端自动化测试或者需要在服务器环境中运行Web任务的开发者。由于其无头特性,...
它支持页面渲染、截图、页面内容抓取等功能,非常适合用作 Web 抓取工具中的页面加载器。 **Selenium** 是一套完整的工具包,用于自动化 Web 浏览器的操作。虽然它的主要用途是 Web 应用程序的测试,但也可以作为...
本案例中,我们将探讨如何使用Selenium和PhantomJS库来抓取论坛内容,以及如何将数据存储到MongoDB数据库中。这是一篇针对新手小白的实践教程,尽管可能存在不足之处,但依然能提供宝贵的实践经验。 首先,**...
- 如果网页使用了HTTPS,需要确保处理证书问题,以免出现安全警告。 - 处理跨域问题,确保能够访问到所有必要的资源。 - 保持库版本的更新,以获得更好的兼容性和性能。 以下是一个简单的代码示例,使用HtmlUnit...
示例代码中使用了Selenium的webdriver来控制PhantomJS浏览器,通过加载URL并执行JavaScript,最终抓取到了京东手机页面中的手机名称和价格信息。 在实际应用中,这样的爬虫可以应用于多种场景,比如价格监控、市场...
4. **调用屏幕捕获库**:使用PhantomJS或Puppeteer的API,执行截图操作,得到网页的Bitmap对象。 5. **图像处理**:根据需要调整截图大小、裁剪不需要的部分,或者添加水印等。 6. **保存图像**:使用Image类的`...
PhantomJS是一款基于WebKit的服务器端JavaScript API,它允许开发者在没有实际浏览器界面的情况下运行Web页面。这意味着你可以用它来执行JavaScript、模拟用户交互、截图、甚至进行网页性能测试。PhantomJS的主要...
动态网页的抓取是现代爬虫的一大挑战,简历中提到使用Selenium+PhantomJS,这是一个组合,Selenium用于模拟浏览器行为,PhantomJS是无头浏览器,它们可以处理JavaScript渲染的页面。 Scrapy框架是Python爬虫开发的...
屏幕截图应用一个由 , , , 和支持的简单屏幕截图应用程序和Web服务。设置克隆此仓库并安装deps: $ git clone https://github.com/visionmedia/screenshot-app.git$ cd screenshot-app$ npm install -d运行应用...
使用spa之后,页面在切换的时候非常流畅,完全没有那种不断刷新的感觉,而是非常快的就有了响应,因为js运行速度很快,所以js在做本地路由的时候,就会非常快。 -单页应用没有页面之间的切换,就不会出现“白屏...
它支持页面导航、DOM操作、网络请求、断言以及屏幕截图等功能,广泛应用于网站的端到端测试、数据抓取、网页监控等多个领域。 1. **导航和交互**:CasperJS提供了`click()`, `fill()`, `type()`等方法,可以模拟...
3. **支持AJAX**:HTMLUnit可以处理异步加载的数据,这对于现代Web应用的测试至关重要,因为许多网页使用AJAX技术来更新内容。 4. **自动处理JavaScript错误**:HTMLUnit尝试在遇到JavaScript错误时继续执行,这样...
《使用ScreenshotDiff进行网页屏幕快照差异比较》 在当今的Web开发中,对网站界面进行测试和调试是一项至关重要的任务。"ScreenshotDiff" 是一个工具,它允许开发者捕获网站的屏幕快照并对比不同版本之间的差异。这...