最新消息:备用域名:https://yeeach.me

在Ubuntu上使用Xvfb或vncserver抓取网页画面制作thumbnail

技术 3085浏览 0评论

1、安装xvfb或vncserver

apt-get install xvfb

apt-get install vncserver xvncviewer

不用两个都安装,xvfb和vncserver都能够在没有安装X-Windows的情况下,提供X终端服务。可以只安装其中一个,建议安装vncserver,以可以通过诸如tightvnc之类的客户端进行管理。因此就不暂时测试xvfb方式,有空再试验。

2、安装imagemagick

apt-get install imagemagick

3、创建firefox 制作thumbnail时候使用的profile,避免已安装extension的干扰。

firefox -CreateProfile Screenshot

关于firefox的command line,可以参考:

http://kb.mozillazine.org/Command_line_arguments

4、生成thumbnail

vncserver -geometry 1024×768 -depth 24

#DISPLAY=:1 firefox -P "Screenshot" &

DISPLAY=:1 firefox -P "Screenshot"  -new-window http://www.yeeach.com &

DISPLAY=:1 import -window root yeeach.png

不知为何使用命令:

DISPLAY=:1 firefox -P "Screenshot" -remote "openurl(javascript:window.open(‘http://www.yeeach.com/‘,”,’fullscreen=yes,toolbar=no,width=1024,height=768’))"始终报错:

Error: No running window found

因此DISPLAY=:1 firefox -P "Screenshot" &  实际上没有起作用,因此注释掉,等有空时候再具体研究原因。

5、为了方便测试,可以首先清除掉X11相关的lock文件和进程

rm -rf /tmp/.X11-unix/* ;rm -rf /tmp/.X*lock

ps -ef|grep X|grep -v grep |awk ‘{print $2 }’ |xargs kill -9

 

5、总结:

  • 采用此种方式如果处理过程中,如果出现非正常关闭的情况,firefox打开时候会提示“恢复上次会话”的提示,因此可能导致抓取页面不成功,比较烦人。可以采用的解决方案:

    a、修改配置参数browser.startup.page,关掉firefox的崩溃恢复提示机制。
      推荐设置为 3。firefox 会恢复崩溃时的会话页面,但是正常关闭时,你可能也需要上次的那些会话页面

      0 启动打开 about:blank 空页面

      1 启动打开homepage 主页面

      2 启动打开上次最后关闭时的页面

      3 启动打开上次最后会话的那些页面

    b、采用Tab Mix PlusSessionPage 扩展设置

googledotcom

  • 此种方法实际上是利用了imagemagick抓屏的功能,抓取用firefox打开页面的thumbnail,尽管可以利用imagemagick裁剪不需要的区域,相对于诸如page saver或screengrab的方案或基于gecko的方案还是比较不是很精准,尤其是不能滚动完整抓取多屏的页面。
  • 在调试时候,用tightvnc或其他vnc客户端登录终端进行管理还是很方便,能够及时排查出现的问题,这一点比xvfb方便。

6、参考资料

http://kb.mozillazine.org/Command_line_arguments

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://brad.livejournal.com/2015327.html

http://pc90.narc.affrc.go.jp/meng/?p=8

 

Technorati 标签: , , , ,

转载请注明:出家如初,成佛有余 » 在Ubuntu上使用Xvfb或vncserver抓取网页画面制作thumbnail

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (0)

  1. DISPLAY=:1 import -window root yeeach.png 我在我的机子上运行上面这句的时候报 By default,'file'is written in ths MIFF image format.To speify a particular image format,precede... 有没有msn。我们沟通一下。谢谢。 我的MSN:[email protected]
    joe16年前 (2008-03-11)回复