使用Python控制浏览器?

时间:2010-07-30 06:16:21

标签: python browser webbrowser-control

是否可以使用Python控制像Firefox这样的网络浏览器?

我想做像

这样的事情
  • 启动浏览器
  • 强制点击网址
  • 截图

6 个答案:

答案 0 :(得分:18)

Selenium Remote Control是一个非常接近你所追求的项目。使用随附的selenium.webdriver子包很容易在Python中工作。曾几何时,这是两个项目。他们现在已经统一了。

安装

简单!

$ 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来完成这个简单的任务。

答案 1 :(得分:8)

如果您需要截屏,那么您需要渲染页面。我建议使用Selenium(如Tim所述),或者spynner

以下是使用spynner所需内容的示例代码:

import spynner

browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()

答案 2 :(得分:3)

wxWebConnect是一个用于控制Gecko(Mozilla的渲染引擎)的wxWidgets库。与wxPython一起,它允许您用Python编写自己的(最小)Web浏览器,从而控制点击。

答案 3 :(得分:1)

Ag在Python中控制浏览器的好方法是使用PyQt4.QtWebKit

答案 4 :(得分:0)

取决于你真正想要实现的目标。如果您需要做一些不受用户干扰的自动操作,您可以使用浏览器的底层引擎,如Gecko或WebKit,无需加载浏览器本身。可以使用这些引擎的Python绑定。

浏览器本身并不向外部进程提供此类API。对于Firefox,您需要将一些浏览器端代码注入chrome,作为扩展或插件。

答案 5 :(得分:0)

问题有点陈旧,但我看不到pywebkitgtk的引用,你应该试一试。我使用spynner绑定开发了pyqt.qtwebkit,但是喜欢pygtk的程序员应该尝试使用pywebketgtk(这对我来说更像pythonic)。请注意,Qt绑定更完整(或者至少是我上次检查时)。