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

A new stable and development release.

Changes from 0.0.9 to 0.0.10:

* Changed license from MIT to BSD, to make it easier to use other code.
The only difference is the addition of a non-endorsement clause.
* Default value for single-selection SELECT controls was wrong.
Before, nothing was selected if select_default argument to
ParseResponse / ParseFile was False (the default). Now, the first
item is selected, as documented. Thanks to Chris Curvey.
* Fixed exceptions raised by HTMLForm.__getitem__ / .__setitem__
and SelectControl.toggle_by_label.
* RadioControl now has default value "on" -- same as for
CheckboxControl. Both IE5 and Mozilla Firebird 0.6 do this.
* CHECKBOX and multiple SELECT controls now allow
control.value = None, for consistency.
* Parse errors may now be ignored, thanks to ignore_errors
argument to ParseFile and ParseResponse.
* Other minor changes.

Changes from 0.1.2a to 0.1.3a:

* Equivalent changes to those listed above.
* Added HTMLForm.set and HTMLForm.clear methods (and corresponding
control methods). Useful!
* A minor 2.3 compatibility fix.

Note that there will be a couple more interface changes before a 0.1.x
beta release (the only important planned change relates to the
disabled attribute). Multi-file upload is still not implemented.


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.acme.com/form.html"))
form = forms[0]
print form
form["author"] = "Gisle Aas"

# form.click returns a urllib2.Request object
# (see HTMLForm.click.__doc__ if you don't have urllib2)
response = urlopen(form.click("Thanks"))


John