Bueno, estoy tratando de iniciar sesión en un sitio usando Python y mecanizar.Envío de formularios con Mechanize (Python)
Tengo el sitio abrió:
site = br.open("http://example.com/login.php")
Y tengo una lista de las formas (con br.forms).
<GET http://example.com/search.php application/x-www-form-urlencoded
<HiddenControl(search=1) (readonly)>
...
<POST http://example.com/login.php application/x-www-form-urlencoded
<TextControl(username=)>
<PasswordControl(password=)>
<CheckboxControl(stay=[1])>
<SubmitControl(<None>=Log in) (readonly)>>
He intentado enviar los campos de nombre de usuario y contraseña.
Traté de hacerlo de esta manera:
br.select_form(nr=0)
br.form["username"] = 'usernamehere'
br.form["password"] = 'passwordhere'
br.submit()
Entonces me di cuenta que las formas que estaban tratando de llenar no fueron los primeros en la página, pero cambiando el 0 no ayudó en nada. ¿Qué debo hacer para seleccionar el formulario en una página como esta?
¡Sin embargo! Ese no es el único problema.
Cuando corro, me sale este error:
Traceback (most recent call last):
File "C:\Python26\login.py", line 34, in <module>
br.form["username"] = 'usernamehere'
...
ControlNotFoundError: no control matching name 'username'
¿Cómo puedo solucionar este problema? D: ¿O lo estoy haciendo totalmente mal? Si es el último, ¿cómo lo haré?
br.select_form (name = "username") devuelve un error: FormNotFoundError: ningún nombre que coincida con el nombre 'username' - igual que antes, pero esta vez con la línea que acabo de agregar. – Matthew
¿Estás seguro de que tienes el nombre correcto? intente con la forma en br.forms(): imprima el formulario – tovmeod
Positivo. Comprobé br.forms() y el html crudo. – Matthew