我刚开始在Python中使用机械化,我已经有一些问题了。我浏览过StackOverflow和Google,我也看到有人说文档很棒,应该很容易让它工作,但我认为我不知道该如何查找这些文档,因为所有的可以找到代码示例,这些代码示例并不真正教会我如何执行我正在尝试做的特定事情。如果有人能够指出我的这些文件,我很乐意自己阅读并解决我的问题。Python中的机械化 - 提交后重定向不工作
对于实际问题,我试图通过在表单中发送我的用户名和密码信息登录到网站。当信息正确时,我通常会重定向,但它在机械化中不起作用。
这是我没有得到的部分,因为如果我在调用提交后立即打印页面的html内容,页面将显示一个变量,显示身份验证是否有效。如果我将密码更改为不正确的密码,则html会显示一条消息“无效的凭据”,就像我正常浏览网站时一样。
这是我如何做的代码示例。请记住,这可能是完全错误的,因为我只是想运用我在实例中发现:
import mechanize
import cookielib
# Start Browser
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.open('http://www.complexejuliequilles.com/')
for l in br.links(url_regex='secure'):
br.follow_link(l)
br.select_form('form1')
br.form['fldUsername'] = 'myUsername'
br.form['fldPassword'] = 'myPassword'
br.submit()
在这个特殊的例子,我打开http://www.complexejuliequilles.com,然后我按照在具有底部的链接文本“管理”,我在表单中输入我的凭证,然后提交。通常情况下,我将被重定向到我所在的第一个页面,但只有更多的按钮可供管理员使用。我想单击其中一个链接来填写另一个表单,以添加我拥有其电子邮件地址,姓名等的用户列表。
有没有简单的东西我错过了?我想我已经掌握了基础知识,但是我不知道该库足以找出重定向发生了什么问题。
这是很好的建议!对于for循环,这是我已经复制并适应了我的需求,但你的方式显然更好。我只是有一个问题,虽然...你说我可以解析html_data来找到重定向URL,我可以管理它,但是我不知道在我拥有这个URL之后我应该调用什么函数,所以我可以保持登录状态......我还在想,如果我已经知道重定向url而不会丢失我的登录信息,是否真的必须解析html才能获得重定向链接,或者如果我可以硬编码它? – 2012-07-31 12:46:17
它只是br.open(link_string)。 – 2012-08-02 03:31:33
您可以对链接字符串进行硬编码,但您应该知道如果链接更改,您的代码将被弃用。你不应该用cookies来担心:机械化浏览器管理cookies,你可以认为你是在一个普通的图形浏览器内的地址栏中输入你的链接。只要不打开另一个浏览器(即始终使用您创建的相同“br”),因此您的cookies将被保存在“jar”中(即,登录不应该丢失)。 – 2012-08-02 03:45:26