是否可以使用Python控制像Firefox这样的网络浏览器?
我想做像
这样的事情等
答案 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绑定更完整(或者至少是我上次检查时)。