2009-04-24 9 views
5

Pythonを使用して、http://utahcritseries.com/RawResults.aspxの値を読み取ろうとしています。私はページをうまく読むことができますが、他の年のデータを見るためには、年のコンボボックスの値を変更するのが難しいです。 2002年のデフォルト以外のデータをどのように読み取ることができますか?asp.net AJAXアプリケーションからPythonを取得するデータ

年のコンボボックスが変更されると、そのページはHTTP投稿をしているように見えます。コントロールの名前はct100 $ ContentPlaceHolder1 $ ddlSeriesです。 urllib.urlencode(postdata)を使用してこのコントロールの値を設定しようとしましたが、何か間違っている必要があります。ページ上のデータは変更されていません。これはPythonでできますか?

可能であれば、私はセレンを使用しないことをお勧めします。

私は

import urllib 

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

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

print src 

(stackoverflowのユーザーDBRから)このようなコードを使用してきた

しかし、同じ2002年のデータを引き上げているようです。私はファイアウォールを使ってヘッダーを検査しようとしましたが、無関係で無作為なデータが多数送られてきて、これらの値をサーバーに戻す必要がありますか?

答えて

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

+0

感謝!それは箱からすぐに働いた!私はPythonと機械化の両方に新しいです - 私はこれを読むためにどこに確信がありませんでした。本当にありがとう! –

+0

HTMLを解析する必要がある場合は、BeautifulSoupライブラリをチェックアウトする必要があります。機械化+美しいスープはスクリーンスクレイピングには素晴らしいです。 http://www.crummy.com/software/BeautifulSoup/ – codeape

関連する問題