2009-04-20 11 views
1

In Python versuche ich die Werte auf http://utahcritseries.com/RawResults.aspx zu lesen. Wie kann ich andere Jahre als den Standard von 2002 lesen?Python wählt einen Wert in einem Kombinationsfeld und HTTP POST

Bisher konnte ich mithilfe von mechanize auf SELECT verweisen und alle verfügbaren Optionen/Werte auflisten, bin mir jedoch nicht sicher, wie ich den Wert ändern und das Formular erneut senden kann.

Ich bin sicher, dass dies ein häufiges Problem ist und häufig gefragt wird, aber ich bin mir nicht sicher, wonach ich eigentlich suchen sollte.

+0

Es scheint eine Art von ASP.NET Gerüsttyp Sache zu sein, da der Code sehr aussieht computergenerierte. Vielleicht könnte ein bisschen Umformulierung helfen, so etwas wie "Daten aus AJAX ASP.NET-Anwendung holen" ..? – dbr

Antwort

1

So wie etwa diese:

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

mit Problemen zu AJAX-Laden der Seiten beziehen, verwenden Firebug!

Installieren und öffnen Firebug (es ist ein Firefox-Plugin), auf die Net-Seite gehen, und stellen Sie sicher, „Alle“ ausgewählt ist. Öffnen Sie die URL und ändern Sie das Auswahlfeld und sehen Sie, was an den Server gesendet wird und was empfangen wird.

Es scheint, dass das eingängige Feld ctl00$ContentPlaceHolder1$ddlSeries ist, was verantwortlich ist .. Arbeitet die folgende ..?

import urllib 

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

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

print src 
+0

Nein, das funktioniert nicht - wenn ich src drucke, sehe ich immer noch Werte von 2002. Ich habe etwas Ähnliches versucht (wenn auch VIELE mehr Zeilen;) - Ich bin nur ein Anfänger) –