2016-06-01 3 views
2

RoboBrowser를 사용하여 웹 사이트에 로그인하려고하는데 오류 메시지가 표시됩니다.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> 

것은 넣으려면 양식 필드의 값은 이라는 이름 인 속성이 아니라 ID입니다. 당신은 당신이 그들을 인쇄 할 수있는 형태의 필드를 얻을 필요가있는 경우

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: 
    form['userid'] = 'my_username' 
    form['password'] = 'my_password' 
except Exception: 
    pass 

내가 다른 웹 사이트를 사용하면 그렇게 확신 입력 한 올바른 양식 필드를 만드는 것보다 :

나는 사용하여이 오류를 해결하기 수 있었다.

이것이 도움이되는지 알려주세요.