Python seleccionando un valor en un cuadro combinado y HTTP POST
-
12-09-2019 - |
Pregunta
En Python, estoy tratando de leer los valores en los http://utahcritseries.com/RawResults.aspx . ¿Cómo puedo leer otros años que el valor predeterminado de 2002?
Hasta ahora, el uso de mecanizar, he sido capaz de hacer referencia a la SELECT y una lista de todas sus opciones / valores disponibles, pero estoy seguro de cómo cambiar su valor y vuelva a enviar el formulario.
Estoy seguro de que este es un problema común y se le pide con frecuencia, pero no estoy seguro de lo que ni siquiera debería estar buscando.
Solución
Así que tal esto:
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()
Otros consejos
Con los problemas relacionados con AJAX-carga de las páginas, utilice Firebug!
Instalar y Firebug abierta (es un plugin de Firefox), ir a la página de red, y asegúrese de que "todos" se ha seleccionado. Abrir la URL y cambiar el cuadro de selección, y ver lo que se envía al servidor, y lo que se recibe.
Parece que la ctl00$ContentPlaceHolder1$ddlSeries
campo catchily-llamada es lo que es responsable .. ¿El siguiente trabajo ..?
import urllib
postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}
src = urllib.urlopen(
"http://utahcritseries.com/RawResults.aspx",
data = urllib.urlencode(postdata)
).read()
print src