Python-从ASP.NET AJAX应用获取数据
我正在用Python读取这个网站上的数据:http://utahcritseries.com/RawResults.aspx。我可以顺利读取页面内容,但在更改年份下拉框的值时遇到了困难,想查看其他年份的数据。我该如何读取2002年以外的年份的数据呢?
这个页面在年份下拉框改变后似乎会进行一次HTTP Post请求。这个控件的名字是ct100$ContentPlaceHolder1$ddlSeries。我尝试用urllib.urlencode(postdata)来设置这个控件的值,但好像做错了什么——页面上的数据没有变化。这在Python中可以实现吗?
如果可能的话,我更希望不使用Selenium。
我一直在使用这样的代码(来自stackoverflow用户dbr)
import urllib
postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}
src = urllib.urlopen(
"http://utahcritseries.com/RawResults.aspx",
data = urllib.urlencode(postdata)
).read()
print src
但似乎还是拉取到了同样的2002年的数据。我尝试用firebug检查请求头,发现有很多看起来杂乱无章的数据在来回发送——我是否也需要把这些值发送回服务器呢?
1 个回答
3
可以使用非常棒的 mechanize 库:
from mechanize import Browser
b = Browser()
b.open("http://utahcritseries.com/RawResults.aspx")
b.select_form(nr=0)
year = b.form.find_control(type='select')
year.get(label='2005').selected = True
src = b.submit().read()
print src
Mechanize 可以在 PyPI 上找到:easy_install mechanize