Próbuję zalogować się do witryny za pomocą Pythona i zmechanizować.Przesyłanie formularzy za pomocą Mechanize (Python)
mam miejsce otwarte:
site = br.open("http://example.com/login.php")
I mam listę formularzy (z 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)>>
Próbowałem przesłać pola nazwy użytkownika i hasła.
Próbowałem robić to tak:
br.select_form(nr=0)
br.form["username"] = 'usernamehere'
br.form["password"] = 'passwordhere'
br.submit()
Wtedy zdałem sobie sprawę, że formy ja próbujący wypełnić nie były pierwszymi na stronie, ale zmieniając 0 nie pomoże z niczego. Co powinienem zrobić, aby wybrać formularz na stronie takiej jak ta?
Jednak! To nie jedyny problem.
Kiedy uruchamiam go, otrzymuję ten błąd:
Traceback (most recent call last):
File "C:\Python26\login.py", line 34, in <module>
br.form["username"] = 'usernamehere'
...
ControlNotFoundError: no control matching name 'username'
Jak mogę rozwiązać ten problem? D: Czy robię to zupełnie źle? Jeśli to drugie, jak miałbym to zrobić?
br.select_form (name = "username") zgłasza błąd: FormNotFoundError: brak formularza pasującego do nazwy 'username' - tak jak poprzednio, ale tym razem z linią, którą właśnie dodałem. – Matthew
czy jesteś pewien, że masz odpowiednie imię? spróbuj formularza w br.forms(): wydrukuj formularz – tovmeod
Pozytywny. Sprawdziłem br.forms() i surowy html. – Matthew