Python sélectionner une valeur dans une zone de liste déroulante et HTTP POST
-
12-09-2019 - |
Question
En Python, je suis en train de lire les valeurs sur http://utahcritseries.com/RawResults.aspx . Comment puis-je lire des années autres que la valeur par défaut de 2002?
Jusqu'à présent, en utilisant mécaniser, je suis en mesure de faire référence à la commande SELECT et la liste de toutes ses options disponibles / valeurs, mais ne suis pas sûr comment changer sa valeur et soumettre à nouveau le formulaire.
Je suis sûr que c'est un problème commun et est souvent demandé, mais je ne suis pas sûr de ce que je même être à la recherche.
La solution
Alors que diriez-vous:
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()
Autres conseils
Avec les problèmes relatifs à AJAX-chargement des pages, utilisez Firebug!
Installer et Firebug ouvert (c'est un plugin Firefox), allez à la page Net, et assurez-vous « All » est sélectionné. Ouvrez l'URL et changer la boîte de sélection, et voir ce qui est envoyé au serveur, et ce qui est reçu.
Il semble que le champ catchily nommé ctl00$ContentPlaceHolder1$ddlSeries
est ce qui est responsable .. Est-ce que les travaux suivants ..?
import urllib
postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}
src = urllib.urlopen(
"http://utahcritseries.com/RawResults.aspx",
data = urllib.urlencode(postdata)
).read()
print src