Python网址表单提交无效

时间:2014-10-16 05:33:50

标签: python

使用Python,我尝试将表单提交到网址并获得回复..这就是我正在做的事情:

import urllib, urllib2

data = {
    'date': '300186',
    'search_type': 'state',
    'search_state': 'NY',
}

req = urllib2.Request(
    url='https://services.aamc.org/20/mcat/findsite', 
    data=urllib.urlencode(data), 
    headers={"Content-type": "application/x-www-form-urlencoded"}
)

response = urllib2.urlopen(req)
print(response.read())

但是,我得到了这个:

<script>location.replace('https://services.aamc.org/20/mcat');</script>

我想这只是意味着重定向到主页...我是否遗漏了某些内容,或者AAMC网站是故意这样做的??

由于


修改

所以我基本上试图连接到网址&#34; https://services.aamc.org/20/mcat/findsite/findexam?date=3001816search_type=state&search_state=NY&#34;

当我在浏览器中输入此内容时,此功能正常。所以我猜这个查询没有错误

1 个答案:

答案 0 :(得分:0)

我认为您已经从浏览器登录该站点。因此,该网站可能已在您的浏览器中放置一个cookie,以便在下次尝试时识别您自动登录您(就像stackoverflow.com一样)。但是当您从python脚本发送请求时,没有任何东西可以识别您,并且您被重定向到登录页面(我尝试了您显示的URL并且是......)。

您必须在脚本中进行连接才能传递登录页面。但要使其正常工作,您必须向HttpCookieProcessor

添加Opener处理程序
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

然后使用

response = opener.open(req)

而不是

response = urllib2.urlopen(req)