Python-从ASP.NET AJAX应用获取数据

5 投票
1 回答
3590 浏览
提问于 2025-04-15 11:14

我正在用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

撰写回答