http://wwwsearch.sourceforge.net/ClientForm/

Changes from 0.1.10 to 0.1.15:

The following bugs were fixed in both 0.1.x and 0.0.x:

* TEXTAREA contents are no longer .strip()ped on form parsing.
* Fixed bugs where TEXTAREA or OPTION containing entity reference
would result in truncated element contents.
* A few doc fixes in HTMLForm.__doc__.
* Fixed ImageControl.pairs(): return value contained integer
coordinates instead of strings.
* Empty OPTION no longer causes KeyError.
* ClientForm.urlencode() works with Unicode.
* Minor code clean-up.

The following bugs were fixed only in 0.1.x :

* All form attributes are now available in HTMLForm.attrs
(previously, name, action, method and enctype were not present).
* ignore_errors is now ignored: not working, and a bad idea in the
first place.
* Take note of BASE element.


Requires Python >= 1.5.2.

ClientForm is a Python module for handling HTML forms on the client
side, useful for parsing HTML forms, filling them in and returning the
completed forms to the server. It has developed from a port of Gisle
Aas' Perl module HTML::Form, from the libwww-perl library, but the
interface is not the same.

Simple example:

from urllib2 import urlopen
from ClientForm import ParseResponse

forms = ParseResponse(urlopen("http://www.example.com/form.html"))
form = forms[0]
print form
form["author"] = "Gisle Aas"

# form.click returns a urllib2.Request object
# (see HTMLForm.click_request_data.__doc__ if you're not using urllib2)
response = urlopen(form.click("Thanks"))


John