2009-04-20 107 views
1

在Python中,我试图读取http://utahcritseries.com/RawResults.aspx上的值。我如何阅读2002年以外的其他年份?Python在组合框和HTTP POST中选择一个值

到目前为止,使用机械化,我已经能够引用SELECT并列出所有可用的选项/值,但我不确定如何更改其值并重新提交表单。

我确定这是一个常见问题,经常被问到,但我不知道我应该甚至在寻找什么。

+0

这似乎是某种ASP.NET脚手架式的东西,因为代码看起来非常生成的计算机。也许一些重新说明可能会有所帮助,比如“从AJAX ASP.NET应用程序获取数据”。 – dbr 2009-04-20 20:48:03

回答

1

那么这个怎么样:

from mechanize import Browser 
year="2005" 

br=Browser() 
br.open("http://utahcritseries.com/RawResults.aspx") 
br.select_form(name="aspnetForm") 
control=br.form.find_control("ctl00$ContentPlaceHolder1$ddlSeries") 
control.set_value_by_label((year,)) 
response2=br.submit() 

print response2.read() 
0

与涉及的AJAX页面加载问题,请使用Firebug!

安装并打开Firebug(这是一个Firefox插件),转到网络页面,并确保“所有”被选中。打开URL并更改选择框,查看发送到服务器的内容以及收到的内容。

看来积极的字段ctl00$ContentPlaceHolder1$ddlSeries是什么是负责..以下工作..?

import urllib 

postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9} 

src = urllib.urlopen(
    "http://utahcritseries.com/RawResults.aspx", 
    data = urllib.urlencode(postdata) 
).read() 

print src 
+0

不,这不起作用 - 当我打印src时,我仍然看到2002年的值。我尝试了类似的东西(虽然有更多的线条;) - 我只是一个菜鸟) – 2009-04-20 21:11:53

相关问题