这是我的代码: 来自robobrowser导入浏览器
url = 'http://diesel.elcat.kg/index.php?act=Login&CODE=00'
url3 = 'http://diesel.elcat.kg/index.php?act=post&do=reply_post&f=178&t=233500064'
m = browser.RoboBrowser()
m.open(url)
# SIGNING IN(form1)
form1 = m.get_form(action='https://diesel.elcat.kg/index.php?act=Login&CODE=01')
form1['UserName'].value = 'Username'
form1['PassWord'].value = 'Password'
m.submit_form(form1)
# FINISHED SIGNING IN(everything worked)
# GOING TO THE PAGE WHERE FORM IS LOCATED
m.open(url3)
# Can't submit this form
form2 = m.get_form(action="http://diesel.elcat.kg/index.php?")
form2['Post'].value = 'up'
m.submit_form(form2)
我可以登录网站,因此form1可以工作,但是当我尝试在这种情况下留下评论(向上),form2不起作用。我不断收到InvalidSubmit错误或错误请求错误。 form1的代码和form2的代码似乎是相同的,但是一个有效,另一个没有。我正在使用python3.5和robobrowser,我正在使用Mac OS,如果这将有所帮助。先感谢您。 这是我的追溯:
Traceback (most recent call last):
File "/Users/bkkadmin/Desktop/Daniiar/upper/test2.py", line 18, in <module>
m.submit_form(form)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/robobrowser-0.5.3-py3.5.egg/robobrowser/browser.py", line 339, in submit_form
payload = form.serialize(submit=submit)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/robobrowser-0.5.3-py3.5.egg/robobrowser/forms/form.py", line 226, in serialize
include_fields = prepare_fields(self.fields, self.submit_fields, submit)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/robobrowser-0.5.3-py3.5.egg/robobrowser/forms/form.py", line 154, in prepare_fields
raise exceptions.InvalidSubmitError()
robobrowser.exceptions.InvalidSubmitError
答案 0 :(得分:4)
我今天遇到了同样的问题,错误相同。导致上述问题的一个可能原因是您的form2实际上包含多个提交字段,对应于原始html中的多个提交按钮。您可以print(len(list(form2.submit_fields.items(multi=True))))
查看此信息。如果是这种情况,则必须将对submit_form
的调用修改为m.submit_form(form2, submit=your_submit)
,其中第二个参数your_submit
是您要使用的相关提交字段。这个reference讨论了如何提取所需的提交字段。
顺便提一下,如果你想知道长print
代码的来源,它来自robobrowser / forms / form.py中prepare_fields
的正文,它在一个错误输出中显示帐。
希望这有帮助!
答案 1 :(得分:0)
当您安装的软件包在当前项目中损坏时会发生... 因此,尝试在pycharm中创建一个新项目。并再次安装robobrowser库。 并将您的文件粘贴到新项目中...
注意仅在您的代码完全正确时使用此方法