5

使用 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 来检查标头,我看到很多无关的和随机的数据被来回发送 - 我是否还需要将这些值发布回服务器?

4

1 回答 1

3

使用优秀的机械化库:

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

机械化在 PyPI 上可用:easy_install mechanize

于 2009-04-24T19:47:01.847 回答