<p>Mechanize不处理javascript,但对于这种特殊情况,它是不需要的。</p>
<p>首先我们用mechanize打开结果页</p>
<pre><code>url = 'http://ratings.food.gov.uk/QuickSearch.aspx?q=po30'
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open(url)
response = br.response().read()
</code></pre>
<p>然后我们选择aspnet表单:</p>
<pre><code>br.select_form(nr=0) #Select the first (and only) form - it has no name so we reference by number
</code></pre>
<p>表单有5个提交按钮-我们要提交一个按钮,将我们带到下一个结果页:</p>
<pre><code>response = br.submit(name='ctl00$ContentPlaceHolder1$uxResults$uxNext').read() #"Press" the next submit button
</code></pre>
<p>表单中的其他提交按钮包括:</p>
<pre><code>ctl00$uxLanguageSwitch # Switch language to Welsh
ctl00$ContentPlaceHolder1$uxResults$Button1 # Search submit button
ctl00$ContentPlaceHolder1$uxResults$uxFirst # First result page
ctl00$ContentPlaceHolder1$uxResults$uxPrevious # Previous result page
ctl00$ContentPlaceHolder1$uxResults$uxLast # Last result page
</code></pre>
<p>在mechanize中,我们可以获得如下表单信息:</p>
<pre><code>for form in br.forms():
print form
</code></pre>