我正在尝试编写一个简单的机器人,它可以在页面上登录我的帐户,然后评论其他用户的图像。但是我无法正确获取提交工作的评论表单。评论表单如下所示:
<form id="comment-form" action="#" onsubmit="postComment($(this).serialize(),'image',117885,229227); return false;">
<input class="comment" type="text" size="40" name="comment" id="comment" />
<input type="hidden" name="commentObj" value="9234785" />
<input type="hidden" name="commentMode" value="image" />
<input type="hidden" name="userid" value="12427" />
<input class="submit" type="submit" value="Comment" />
</form>
我的代码如下
br.select_form(nr = 1)
br.form['comment'] = 'hello'
br.submit()
该页面有两种形式,评论形式是第二种。所以我确信我选择了正确的形式。谁能解释为什么这不起作用?
表单提交时正在执行一段 JavaScript 代码:
onsubmit="postComment($(this).serialize(),'image',117885,229227); return false;"
mechanize
根本无法处理它,因为它不是浏览器并且内部没有 javascript 引擎。
可能的解决方案:
-
高级方法 - 使用真正的浏览器selenium http://selenium-python.readthedocs.org/webdriver 和自动化使用操作 - 将密钥发送到输入,单击提交按钮等。示例代码:
from selenium import webdriver
driver = webdriver.Firefox()
dirver.get('my_url_here')
comment = driver.find_element_by_id('comment')
comment.send_keys('hello')
comment.submit() # this would find an enclosing form and submit it
研究在触发表单提交事件时哪些请求被发送到服务器。然后,使用例如以下命令自动执行请求:requests http://docs.python-requests.org/en/latest/.
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)