2016-06-01 5 views
2

RoboBrowserを使用してWebサイトにサインインしようとしていますが、エラーメッセージが表示されます。RoboBrowser BadRequestKeyError(key)

マイコード:

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() 

エラーメッセージ:

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

誰もいませんか?私は別のフォーラムでこの質問をしていますか?おかげで – RojasRod

+0

ちょっとあなたは解決策を見つけましたか? –

答えて

0

次のようにログインしたいウェブサイトからHTMLコードは次のとおりです。

<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> 

置くためにフォームフィールドの値は、という名前のという属性を取得しなければなりません。

このコードは動作するはずです:あなたはあなたがそれらを印刷することができ、フォームのフィールドを取得する必要がある場合は

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

print form.fields 
0

古いスレッドを、私は同じで苦労してきました問題。これは私のために働いた:

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

しかし、あなたは 'tryとexcept'を使ってみましたか?

私が使用して、このエラーを回避することができた:あなたはあなたが入力し、正しいフォームフィールドを確認してくださいよりも、私は別のウェブサイトを使用

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

を。

これが役立つかどうかお知らせください。

関連する問題