2016-06-01 15 views
2

Ich versuche, mich mit RoboBrowser in einer Website anzumelden, und ich stehe mit einer Fehlermeldung fest.RoboBrowser BadRequestKeyError (Schlüssel)

Mein Code:

from robobrowser import RoboBrowser 

browser = RoboBrowser() 

def login(): 
    browser.open('https://www.kijiji.ca/t-login.html') 
    form = browser.get_form(id="login-form") 
    form.fields["LoginEmailOrNickname"].value = "an_email_address" 
    form.fields["login-password"].value = "a_password" 
    form.fields["login-rememberMe"].value = "true" 
    browser.submit_form(form) 

login() 

Die Meldung Fehler:

Traceback (most recent call last): 
    File "/home/rojaslee/Desktop/kijiji_poster/kijiji_poster.py", line 16, in <module> 
    login() 
    File "/home/rojaslee/Desktop/kijiji_poster/kijiji_poster.py", line 11, in login 
    form.fields["LoginEmailOrNickname"].value = ["an_email_address"] 
    File "/usr/local/lib/python3.4/dist-packages/werkzeug/datastructures.py", line 744, in __getitem__ 
    raise exceptions.BadRequestKeyError(key) 
    werkzeug.exceptions.BadRequestKeyError: 400: Bad Request 
+0

Niemand? Soll ich diese Frage in einem anderen Forum stellen? Danke – RojasRod

+0

hey hast du die Lösung gefunden ?? –

Antwort

0

Der HTML-Code auf der Website Sie sich anmelden wollen, ist wie folgt:

<section> 
    <label for="LoginEmailOrNickname">Email Address or Nickname:</label> 
    <input id="LoginEmailOrNickname" name="emailOrNickname" req="req" type="text" value="" maxlength="128"><span class="field-message" data-for="LoginEmailOrNickname"></span> 
</section> 
<section> 
    <label for="login-password">Password:</label> 
    <input id="login-password" name="password" req="req" type="password" value="" maxlength="64"><span class="field-message" data-for="login-password"></span> 
    <a id="LoginForgottenPassword" href="/t-forgot-password.html">Forgot your password?</a> 
</section> 

zu setzen ein Wert für die Formularfelder müssen Sie die Name Attribut, nicht die ID.

sollten Dieser Code funktioniert:

form.fields["emailOrNickname"].value = "an_email_address" 
form.fields["password"].value = "a_password" 
form.fields["rememberMe"].value = "true" 

Wenn Sie die Felder des Formulars erhalten müssen Sie sie drucken können:

print form.fields 
0

alten Thread, aber ich habe mit dem gleichen zu kämpfen Problem. Dies funktionierte für mich:

from robobrowser import Robobrowser 

browser = RoboBrowser 

def login(): 
    browser.open('https://www.kijiji.ca/t-login.html') 
    form = browser.get_form(id="login-form") 
    form["EmailOrNickname"].value = "an_email_address" 
    form["password"].value = "a_password" 
    form["rememberMe"].value = "checked" 
    browser.submit_form(form) 
0

Aber haben Sie versucht, mit einem "versuchen und außer"?

ich konnte, um diesen Fehler erhalten mit:

try: 
    form['userid'] = 'my_username' 
    form['password'] = 'my_password' 
except Exception: 
    pass 

ich eine andere Website verwendet, als Sie so sicher, dass Sie die richtigen Formularfelder machen.

lassen Sie mich wissen, ob dies hilft!