Python在线表单提交

时间:2011-03-14 23:02:14

标签: python forms login

我使用Python 2.7.1访问在线网站。我需要加载一个URL,然后向该URL提交一个POST请求,导致该网站重定向到一个新的URL。然后我想将一些数据发布到新的URL。这很容易做到,除了有问题的网站不允许用户使用浏览器导航。 (例如,您不能只输入新页面的URL或按后退按钮,您必须通过单击网站上的“下一步”按钮到达那里)。因此,当我尝试这个时:

import urllib, urllib2, cookielib

url = "http://www.example.com/"

jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data_login = "POSTDATA"
form_data_try = "POSTDATA2"
resp = opener.open(url, form_data_login)
resp2 = opener.open(resp.geturl(), form_data_try)

print resp2.read()

我在resp2的网站上收到“请勿使用浏览器上的后退按钮”消息。有没有办法将数据发布到resp给我的网站?提前谢谢!

编辑:我会调查一下Mechanize,谢谢你的指针。但是现在,有没有办法只用Python做到这一点?

2 个答案:

答案 0 :(得分:0)

你看过mechanize了吗?我相信它具有您需要的功能。

答案 1 :(得分:0)

您可能通过“下一步”按钮发布内容来访问该页面。您必须查看按下该按钮时发送的POST参数,并将所有这些帖子参数添加到您的通话中。

网站可能虽然设置的方式是它只接受一个特定的POST参数,以确保你必须通过网站本身(例如通过散列一个时间戳)某种方式或类似的东西)但它不太可能。