我正在尝试使用RoboBrowser登录网站,但遇到了一条错误消息。
我的代码:
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发布于 2017-05-16 00:46:31
旧线程,但我一直在努力解决同样的问题。这对我很有效:
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)发布于 2016-10-07 04:00:04
您要登录的网站的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>要在表单字段中赋值,必须获取name属性,而不是id。
下面的代码应该可以工作:
form.fields["emailOrNickname"].value = "an_email_address"
form.fields["password"].value = "a_password"
form.fields["rememberMe"].value = "true"如果您需要获取表单的字段,您可以打印它们:
print form.fields发布于 2017-09-07 00:32:21
但是你有没有试过使用“try and except”呢?
我可以使用以下命令绕过这个错误:
try:
form['userid'] = 'my_username'
form['password'] = 'my_password'
except Exception:
pass我使用的网站与您不同,因此请确保您输入了正确的表单域。
如果这有帮助,请告诉我!
https://stackoverflow.com/questions/37576190
复制相似问题