开发者

Controlling Browser using Python?

Is it possible to control a web browser like Firefox using Python?

I would want to do things like

etc.


Selenium Remote Control is a project that comes very close to what you are after. It is really easy to get working in Python with the selenium.webdriver subpackage that comes with it. Once upon a time, these were two projects. They've now been unified.

Installation

Simple!

$ pip install -U selenium

Usage

>>> from selenium import webdriver
>>> ff = webdriver.Firefox()
>>> ff.get("http://stackoverflow.com/q/3369073/395287")
>>> ff.save_screenshot("/absolute/path/to/webpage.png")

Notes

The documentation can be slightly confusing for Selenium, because there are two modes to interact with browsers. As well as the webdriver mode, there is the ability to talk to a "standalone Selenium Remote Control server". That approach is what is documented first in the official documentation, but I would stick with webdriver for the simple task here.


If you need to take screenshots, then you need to render the pages. I would recommend to use Selenium (as mentioned by Tim), or then spynner.

Here is a sample code of what you need using spynner:

import spynner

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


wxWebConnect is a wxWidgets library for controlling Gecko (Mozilla's rendering engine). Together with wxPython, it would allow you to write your own (minimal) web browser in Python, and hence control clicks.


Ag great way to control a browser in Python is to use PyQt4.QtWebKit.


Depends what do you actually want to achieve. If you need to do some automatic stuff w/out user interference, you can just use underlying engine of the browser, like Gecko or WebKit, w/out loading browser itself. There are ready Python bindings to these engines available.

Browsers themself do not provide this kind of API to outside processes. For Firefox, you would need to inject some browser-side code into chrome, either as extension or plugin.


The question is a bit old but I see no references to pywebkitgtk, you should give it a try. I developed spynner using the pyqt.qtwebkit bindings, but programmers who prefer pygtk should try pywebketgtk (which feels more pythonic to me). Note though that Qt bindings are more complete (or at least it was last time I checked).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜