Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3049092
  • 博文数量: 535
  • 博客积分: 15788
  • 博客等级: 上将
  • 技术积分: 6507
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 09:11
文章分类

全部博文(535)

文章存档

2016年(1)

2015年(1)

2014年(10)

2013年(26)

2012年(43)

2011年(86)

2010年(76)

2009年(136)

2008年(97)

2007年(59)

分类: LINUX

2010-03-22 09:45:00

为网页做缩略图见:

补充:文章下面添加了使用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
-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我也测试过,效果没有上面的方案好。




阅读(5703) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~