我正在连接一个页面,需要登录与机械化。它在头版上使用了一些JavaScript,使得使用机械化直线更困难。我知道我必须提交什么表单来登录 - 总是由js生成的表单,每次都是一样的。我怎样才能使机械化只是提交不在页面上的自定义表单?基本上相当于this perl problem,但在Python中。蟒蛇机械化 - 提交自定义表格
2
A
回答
5
(注:此想出了最近一次事实上,我现在的工作)
这似乎工作:
br.open(URL)
res = mechanize._form.ParseString(FORM_HTML, BASE_URL)
br.form = res[1]
#continue as if the form was on the page and selected with .select_form()
br['username'] = 'foo'
br['password'] = 'bar'
br.submit()
URL
是访问的网站的完整URL。 BASE_URL
是URL是在目录中。FORM_HTML
是具有form
元素的任何HTML,例如:
<form method='post' action='/login.aspx'>
<input type='text' name='username'>
<input type='text' name='password'>
<input type='hidden' name='important_js_thing' value='processed_with_python TM'>
</form>
出于某种原因,mechanize._form.ParseString
回报两种形式。第一个请求是对基本URL的GET
请求,没有输入;第二,从FORM_HTML
正确解析的形式。
0
解析页面,提取你想要的元素,改造页面,并将它们注入机械化。
对于我工作的项目,我不得不使用模拟浏览器,发现机械化在表单处理上非常差。它会从JavaScript块中抽取未解释的元素并死亡。我不得不写一个解决方法,使用BeautifulSoup去除所有可能导致它在到达表单解析器之前死掉的位。
您可能会也可能不会遇到这个问题,但需要牢记。我最终放弃了机械化方法,并与Selenium一起前往。它的表单处理程序是非常优越的,它可以处理JS。它有问题(浏览器增加了一层复杂性),但我发现它更容易处理。
相关问题
- 1. 蟒蛇机械化填写表格
- 2. 蟒蛇机械化:创建并提交表单
- 3. 蟒蛇机械化 - 不能提交登录表单
- 4. 蟒蛇机械化FormNotFoundError
- 5. 蟒蛇机械化JavaScript提交按钮的问题!
- 6. 蟒蛇机械化形式提交错误
- 7. 提交的蟒蛇请求机械化为JavaScript
- 8. 机械化不提交表格
- 9. 机械化表单提交
- 10. 机械化提交
- 11. 蟒蛇机械化会议未保存
- 12. 更改蟒蛇机械化链接
- 13. 蟒蛇的机械化将不会正确地解析表格
- 14. 如何使用jquery ajax提交表单进行机械化登录? (蟒蛇)
- 15. 蟒蛇机械化奇.read()输出
- 16. 蛮力脚本蟒蛇和机械化
- 17. 表单提交机械化和Python
- 18. Python机械化提交表单数据
- 19. Python机械化 - 提交表单两次
- 20. Python机械化表单提交
- 21. 使用机械化提交表单(PubChem)
- 22. 使用机械化提交表单(Python)
- 23. 机械化 - 添加到表单提交
- 24. 为机械化创建自定义表格
- 25. Python机械化 - 表单提交 - 选择正确的表格
- 26. 提交web表单蟒蛇
- 27. 蟒蛇 - 机械化(设置输入到表单)
- 28. 与蟒蛇下载zip文件机械化
- 29. 蟒蛇机械化处理两个参数同名
- 30. Perl WWW ::使用代理的机械化,不能提交表格
老兄,如果可以的话,我会给你+100。你怎么解决这个问题的?网络上的其他人都没有提出这个问题,许多人被迫放弃了这个解决方案。 – 2013-05-21 20:17:33