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

優れた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

于 2009-04-24T19:47:01.847 に答える