2009-04-20 108 views
1

在Python中,我試圖讀取http://utahcritseries.com/RawResults.aspx上的值。我如何閱讀2002年以外的其他年份?Python在組合框和HTTP POST中選擇一個值

到目前爲止,使用機械化,我已經能夠引用SELECT並列出所有可用的選項/值,但我不確定如何更改其值並重新提交表單。

我確定這是一個常見問題,經常被問到,但我不知道我應該甚至在尋找什麼。

+0

這似乎是某種ASP.NET腳手架式的東西,因爲代碼看起來非常生成的計算機。也許一些重新說明可能會有所幫助,比如「從AJAX ASP.NET應用程序獲取數據」。 – dbr 2009-04-20 20:48:03

回答

1

那麼這個怎麼樣:

from mechanize import Browser 
year="2005" 

br=Browser() 
br.open("http://utahcritseries.com/RawResults.aspx") 
br.select_form(name="aspnetForm") 
control=br.form.find_control("ctl00$ContentPlaceHolder1$ddlSeries") 
control.set_value_by_label((year,)) 
response2=br.submit() 

print response2.read() 
0

與涉及的AJAX頁面加載問題,請使用Firebug!

安裝並打開Firebug(這是一個Firefox插件),轉到網絡頁面,並確保「所有」被選中。打開URL並更改選擇框,查看發送到服務器的內容以及收到的內容。

看來積極的字段ctl00$ContentPlaceHolder1$ddlSeries是什麼是負責..以下工作..?

import urllib 

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

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

print src 
+0

不,這不起作用 - 當我打印src時,我仍然看到2002年的值。我嘗試了類似的東西(雖然有更多的線條;) - 我只是一個菜鳥) – 2009-04-20 21:11:53

相關問題