请问使用selenium截图为什么只能载一屏呢?

我想截取整个web的页面内容,但是使用selenium+python+chrome只能显示显示到哪屏截取哪屏,各位大神有什么解决方案吗?

阅读 12.6k
4 个回答

试试调用 gnome-web-photo 程序来截图?

或者你给火狐安装个 Screengrab 扩展,然后调用它来截图?

有个叫做 Conkeror 的基于Firefox内核的Emacs风格的浏览器,我基于Conkeror写了一个专门用来截图的浏览器。

特性:

  1. 通过监听8989端口接收截图请求, 并在截图完毕后作出响应
  2. 有些<object>, <embed>无法截图,该浏览器会自动注入或修改wmode参数使其可以被截取
  3. 支持 http, socks 等代理
  4. 支持往任何iframe, frame中注入 javascript 代码
  5. 支持 <object> <embed> 的筛选并截取 exactly the certain part.
  6. 可以监听所有的网络请求,并和对应的 page 关联
  7. 页面加载超时 reload page
  8. 请求响应超时 suicide
  9. 支持安装 adblockplus 插件来过滤广告

一个测试用例:

$ telnet 127.0.0.1 8989
{"url":"http://v.youku.com/v_show/id_XNzI1NTYzNDE2.html","delay": 5000,"path":"/tmp/","name":"capture"}

主要参考了 Firebug, Selenium web driver, autoproxy 等插件的源代码。
代码还比较粗糙,而且出于某些原因做了一些临时的优化。我加的代码几乎都在 modules/extras, modules/proxy 下面。

最后,链接在此:https://github.com/TheWaWaR/new-conkeror

有什么建议请提出 issue 这样我才有动力改进它: https://github.com/TheWaWaR/new-conkeror/issues

selenium本质还是个外挂,它没法访问浏览器对整个页面的渲染结果,所以截图截的就是窗口的图。
要么截多张来拼图吧,或者用PhantomJS这类的无头浏览器方案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏