【发布时间】:2011-03-23 02:18:00
【问题描述】:
是否可以使用 Python 控制像 Firefox 这样的网络浏览器?
我想做这样的事情
- 启动浏览器
- 强制点击网址
- 截图
等等
【问题讨论】:
-
对了,你为什么要这么做?是对基于 Web 的软件进行单元测试吗?还是其他目的?
标签: python browser webbrowser-control
是否可以使用 Python 控制像 Firefox 这样的网络浏览器?
我想做这样的事情
等等
【问题讨论】:
标签: python browser webbrowser-control
Selenium Remote Control 是一个非常接近您所追求的项目。使用 Python 附带的 selenium.webdriver 子包非常容易使用它。曾几何时,这是两个项目。他们现在已经统一了。
简单!
$ pip install -U selenium
>>> from selenium import webdriver
>>> ff = webdriver.Firefox()
>>> ff.get("http://stackoverflow.com/q/3369073/395287")
>>> ff.save_screenshot("/absolute/path/to/webpage.png")
对于 Selenium,文档可能会有些混乱,因为有两种模式可以与浏览器交互。除了webdriver 模式外,还可以与“独立的 Selenium 远程控制服务器”通信。这种方法首先记录在 official documentation 中,但我会坚持使用 webdriver 来完成这里的简单任务。
【讨论】:
如果您需要截屏,则需要渲染页面。我建议使用 Selenium(正如 Tim 所提到的),或者然后使用 spynner。
这是使用 spynner 所需的示例代码:
import spynner
browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()
【讨论】:
wxWebConnect 是一个用于控制 Gecko(Mozilla 的渲染引擎)的 wxWidgets 库。与wxPython 一起,它可以让你用 Python 编写自己的(最小的)网络浏览器,从而控制点击。
【讨论】:
在 Python 中控制浏览器的好方法是使用 PyQt4.QtWebKit。
【讨论】:
取决于您真正想要实现的目标。如果您需要在没有用户干预的情况下执行一些自动操作,您可以只使用浏览器的底层引擎,例如 Gecko 或 WebKit,而无需加载浏览器本身。这些引擎有现成的 Python 绑定。
浏览器本身不向外部进程提供这种 API。对于 Firefox,您需要将一些浏览器端代码作为扩展程序或插件注入到 chrome 中。
【讨论】:
这个问题有点老了,但我没有看到对pywebkitgtk 的引用,你应该试一试。我使用pyqt.qtwebkit 绑定开发了spynner,但是喜欢pygtk 的程序员应该尝试pywebketgtk(我觉得它更像python)。请注意,尽管 Qt 绑定更完整(或者至少是我上次检查的时候)。
【讨论】: