为网页做缩略图见:
补充:文章下面添加了使用firefox插件截图以解决不能对flash进行截图的问题,为方案二。
方案一
参考:http://blog.saymoon.com/2009/11/take-snapshot-in-linux-command-line/#viewSource
目的:
在一台没有安装X-server的RHEL 服务器上实现命令行抓取网页快照。
google上搜到的相关的文章都是在Debian上进行配置的,没有在redhat上面的配置,因为涉及到的一些安装程序比较难找,所以在配置时费了不少的时间。
软件:
xvfb(在命令行下实现对X-server的模拟,渲染图形进行缓存)-在没有安装X-Server的环境下提供图像渲染
CutyCapt(模拟浏览器对网页进行下载、HTML、css渲染、Javascript执行,并将最终渲染完成的网页进行快照)- 主力干将
Qt(CutyCapt是基于此框架开发的)
实践:
一、安装QT及相关的软件包
1、安装QT:
因为“CutyCapt depends on Qt 4.4.0+.”rhel自带的qt版本为4.2.1
安装相关软件包 libXext-dev xorg-x11-fonts-base
qt可以选择编译安装或者rpm安装
(1)方法1.编译安装:(编译安装的时间很长,做好心理准备,我的机器比较差,1g内存,Celeron(R) CPU 2.40GHz,编译了大概7个小时,所以建议使用rpm安装)
下载qt源码包
wget -c
安装QT
./configure -continue -prefix /usr/local/qt -release -opensource |
(报错?Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /usr/local/qt-everywhere-opensource-src-4.6.2/mkspecs/linux-g++.
装上这个包就好了 libXext-devel)
make
make install
(2)方法2.rpm安装
rhel5.2上自带的是qt4,但是因为安装CutyCapt需要的QTwebkit等一些工具没有包含在这个版本中,所以需要安装qt4.4
下载地址:
如果上面的地址没有的话,可以直接从下面下载
RPM下载 |
文件: | qt44-4.4.3-10_4.el5.i386.rpm |
大小: | 3492KB |
下载: | 下载 |
|
qt44-x11-4.4.3-10_4.el5.i386.rpm,使用split分割了,因为文件上传限制最大为5m,下载后,先去掉最后面的rpm的扩展名,然后合并即可
cat qt44-x11-4.4.3-10_4.el5.i386.rpm.xa* >qt44-x11-4.4.3-10_4.el5.i386.rpm
RPM下载 |
文件: | qt44-x11-4.4.3-10_4.el5.i386.rpm.xaa.rpm |
大小: | 5120KB |
下载: | 下载 |
|
RPM下载 |
文件: | qt44-x11-4.4.3-10_4.el5.i386.rpm.xab.rpm |
大小: | 5120KB |
下载: | 下载 |
|
RPM下载 |
文件: | qt44-x11-4.4.3-10_4.el5.i386.rpm.xac.rpm |
大小: | 2151KB |
下载: | 下载 |
|
qt44-devel-4.4.3-10_4.el5.i386.rpm:
RPM下载 |
文件: | qt44-devel-4.4.3-10_4.el5.i386.rpm.xaa.rpm |
大小: | 5120KB |
下载: | 下载 |
|
RPM下载 |
文件: | qt44-devel-4.4.3-10_4.el5.i386.rpm.xab.rpm |
大小: | 1972KB |
下载: | 下载 |
|
rpm 安装时,如果和qt或qt4冲突,rpm -e卸载掉qt或qt4。
或者 --nodeps
(3)设置环境变量(以rpm安装为例)
在/etc/profile或 ~/.bashrc 或 ~/.bash_profile中添加:
export QTDIR=/usr/lib/qt44 export QTLIB=/usr/lib/qt44/lib export QTINC=/usr/lib/qt44/include export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export PATH=$QTDIR/bin:$PATH |
二、安装 xvfb
xorg-x11-server-Xvfb xorg-x11-fonts-base
rpm 安装即可
三、安装CutyCapt
wget http://cutycapt.svn.sourceforge.net/viewvc/cutycapt/CutyCapt.tar.gz mv CutyCapt.tar.gz /usr/local/ tar -xvzf CutyCapt.tar.gz cd CutyCapt qmake make |
关于:找不到qmake?
export PATH=$QTDIR/bin:$PATH
关于错误:
/usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_read_info@PNG12_0' /usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_set_gAMA@PNG12_0' /usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_set_PLTE@PNG12_0' /usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_set_filler@PNG12_0' /usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_get_text@PNG12_0' /usr/lib/qt44/lib/libQtGui.so: undefined reference to `png_set_packing@PNG12_0' |
确认安装了libpng libpng-devle
如果仍然有错误的话,修改Makefile文件,添加红色文字部分
LIBS = $(SUBLIBS) -L/usr/lib -lpng12 -L/usr/lib/qt44/lib -lQtWebKit-L/usr/lib/qt44/lib -lQtSvg -lQtGui -lQtNetwork -lQtCor e -lrt -lpthread
|
四、xvfb-run脚本
wget http://www.flexthinker.com/wp-content/uploads/2009/11/xvfb-run.sh.txt mv xvfb-run.sh.txt /usr/local/CutyCapt/xvfb-run.sh chmod u+x /usr/local/CutyCapt/xvfb-run.sh |
|
文件: | xvfb-run.txt.gz |
大小: | 2KB |
下载: | 下载 |
|
五、抓取测试
/usr/local/CutyCapt/xvfb-run.sh --server-args="-screen 0, 1024x768x24" /usr/local/CutyCapt/CutyCapt --url=http://www.google.com --out=google.png |
-n 可以指定终端号,这个号是唯一即可,详细看xvfg-run.sh脚本,在批量抓图时会用到
-n NUM --server-num=NUM server number to use (default: $SERVERNUM)
也可以使用-a参数
-a --auto-servernum try to get a free server number, starting at
--server-num
方案二因为上面的方案不能对flash截图,可以使用下面的方案来,缺点是不能指定截图生成的文件名及路径。
启动vncserver
xstartup设置vnc的启动参数(只有这样才能自动化。)
#twm & 注释掉
gnome-session & 添加
安装firefox,建议yum安装,否则可能会缺少某些相关的rpm包,造成截图时某些图片不能显示。
另外,flash player的版本也很重要,使用最新的flash-plugin-10.1.53.64-release.i386.rpm时截图比较完整。
注意:x86_64位系统,yum安装时会安装32位和64位的firefox,默认启动的是64位的firefox。
flash plugin 没有64位的程序(似乎lab里有开发版的),只有32位的,使用firefox的手动安装插件安装的也是32位的。
因为默认启动的是64位的firefox,但是不能加载32位的plugin,这就造成了在64位的firefox上不能显示flash的问题,解决的办法就是卸载掉64位的firefox。
yum remove firefox-3.6.13-2.el5.centos.x86_64
安装firefox插件,Pearl Crescent Page Saver
地址:。
注意设置环境变量:export DISPLAY=:1.0
使用命令截图:
firefox -saveimage
默认linux没有宋体,拷贝xp的宋体到linux上,并设置firefox使用宋体(参照xp上的firefox设置):
拷贝 window\fonts\simsun.ttc 到 ~/.fonts/
fc-cache -fv
应该就可以了,不行就把simsun.ttc 改成simsun.ttf然后再试
附截图一张,注:因上传文件大小限制,对该图片做了缩小了50%的处理,原图片效果更好。
另 khtml2png我也测试过,效果没有上面的方案好。
阅读(5698) | 评论(0) | 转发(1) |