http://www.yeeach.com/tag/screenshot/
在Ubuntu上使用Xvfb或vncserver抓取网页画面制作thumbnail
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 Plus或SessionPage 扩展设置
- 此种方法实际上是利用了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
相关推荐
例如,在Ubuntu或Debian上,你可以使用以下命令: ```bash sudo apt-get install xserver-xvfb ``` 在CentOS或Fedora上,使用: ```bash sudo yum install xorg-x11-server-Xvfb ``` 或者在使用DNF的系统中: ```...
总结起来,"ubuntu 16.04 rootfs"提供了一种在非图形环境下运行GUI应用的解决方案,它结合了Xvfb的无头显示能力和Ubuntu 16.04的稳定系统环境,使得开发者和系统管理员能够在各种限制条件下更灵活地使用图形化工具。
@赛普拉斯/ xvfb 从节点应用程序轻松启动和停止X虚拟帧缓冲区。 用法 var Xvfb = require ( 'xvfb' ... displayNum - X显示的用途,默认设置为最低未使用的显示数> = 99,如果reuse是假或99,如果reuse是真实的。 reu
xvfbwrapper 使用Xvfb(X虚拟帧缓冲区)管理无头显示信息: 开发人员: : 发布: : 作者:( )-2012-2019 执照:麻省理工学院关于xvfbwrapper: xvfbwrapper是一个python模块,用于使用Xvfb控制虚拟显示。...
Xvfb 和 Xorg/Xdummy 都受支持,因此您可以在无头服务器上运行容器。 如何构建 首先cd到noVNC目录,为noVNC创建一个self.pem证书。 这是必要的,因为我们希望在用户的 Web 浏览器和容器之间强制建立安全连接(通过
码头工人 Xvfb 作为服务安装在 Ubuntu 上的基础 docker 容器。 显示=:99 执照 麻省理工学院
### 在Ubuntu下安装AFNI和FSL的知识点详解 #### 一、概述 AFNI (Analysis of Functional NeuroImages) 和 FSL (FMRIB Software Library) 是两款在神经科学领域广泛应用的功能性磁共振成像(fMRI)数据分析软件。这两...
要在 Xvfb 中xvfb-run ,您可以使用xvfb-run 。 例如, xvfb-run --server-args= " -screen 0 1600x1200x24 " nightwatch -e chrome -a login 让 Chrome 工作 Selenium 附带内置的 Firefox 行为。 要针对 Chrome ...
构建Xvfb二进制文件以在AWS Lambda上运行 入门 生成映像并在本地运行。 然后通过与vnc客户端连接来验证xvfb和fluxbox是否正常工作 $(aws ecr get-login) docker build -t aws-lambda-xvfb . docker run -p 5900:...
FFPuppet FFPuppet是一个Python模块,可自动执行与浏览器过程相关的任务,以帮助... 要在Ubuntu上安装xvfb ,请运行: apt-get install xvfb 安装minidump_stackwalk 当浏览器在没有调试器(GDB / Valgrind)或工
xorg-x11-server-Xvfb-1.20.3-5.el8.x86_64.rpm
xorg-x11-server-Xvfb-1.10.4-6.el6.x86_64.rpm
:cross_mark: :desktop_computer: XVFB Github动作 此操作将安装并使用它运行无头测试。 测试完成后,它会清理xvfb进程。 如果它检测到您未使用linux,则您的测试仍然可以运行,但是没有xvfb,这对于多平台工作流...
xvfb记录 记录xvfb会话
在Ubuntu系统上,使用Python的Selenium库与Chrome浏览器配合,可以实现自动化模拟真实浏览器进行网页访问。这个过程涉及到几个关键步骤,包括安装Chrome浏览器、ChromeDriver、设置环境以及安装和配置Selenium。 ...
描述Xvfb 上的 Headless Selenium 服务器项目要求Ubuntu 12.04 服务器Java 7入门克隆这个存储库: $ cd /opt/$ git clone https://github.com/Tomohiro/xvfb-selenium-server.git 安装依赖: $ cd xvfb-selenium-...
firefox-xvfb-java-gradle-docker 使用Gradle运行任何基于Selenium的应用程序。 需要使用无头Firefox浏览器运行应用程序的任何Java项目都可以使用此基础映像。 这是自动化测试用例,Web爬网程序等的理想选择。 跑步...
爬网基于PlayWright实现对js渲染的动态网页进行抓取,包含网页源码,截图,网站入口,网页互动过程等,支持优先级任务调度。 crawloop目前支持一下特性原生浏览器环境,支持chrome,firefox,协程处理调度任务完整...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
node-xvfb:从您的节点应用程序轻松启动和停止 X 虚拟帧缓冲区。用法 var Xvfb = require ( 'xvfb' ) ;var xvfb = new Xvfb ( ) ;xvfb . startSync ( ) ;// code that uses the virtual frame buffer herexvfb . ...