Using Mechanize (Python) to fill form

user2684957 picture user2684957 · Mar 10, 2014 · Viewed 21.2k times · Source

I want to fill the form on this page using python mechanize and then record the response. How should I do it? When I search for forms on this page using the following code, it shows the form only for the search. How should I locate the form name of the other form with fields such as name, gender etc?

http://aapmaharashtra.org/join-us

Code:

import mechanize
br=mechanize.Browser()
br.open("http://aapmaharashtra.org/join-us")
for form in br.forms():
    print "Form name:", form.name
    print form

Answer

alecxe picture alecxe · Mar 10, 2014

The form you need (with an id="form1") is loaded dynamically on the fly - this is why you don't see it in the select_forms() results.

By using browser developer tools you may find out that the form is loaded from http://internal.aamaadmiparty.org/Directory/Format.aspx?master=blank link.

Here's what you should start with then:

import mechanize


br = mechanize.Browser()
br.open("http://internal.aamaadmiparty.org/Directory/Format.aspx?master=blank")
br.select_form(nr=0)

br.form['ctl00$MainContent$txtname'] = 'Test Name'
# fill out other fields

req = br.submit()

Hope that helps.