Python POST 请求失败

Python POST Request Failing

本文关键字:失败 请求 POST Python      更新时间:2023-09-26

我想在这个网站上做一个 POST 请求:

http://web1.ncaa.org/stats/StatsSrv/careersearch

右侧的窗体有四个下拉列表。当我运行下面的代码时,"学校"顽固地不会被选中。有一个隐藏的输入可能导致问题,但我无法修复它。页面上的javascript似乎没有效果,但我可能是错的。任何帮助不胜感激:

#!/usr/bin/python
import urllib
import urllib2
url = 'http://web1.ncaa.org/stats/StatsSrv/careersearch'
values = {'searchOrg' : '30123','academicYear' : '2011','searchSport' : 'MBA','searchDiv' : '1'}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

正如您所怀疑的,您缺少一个隐藏字段:doWhat = 'teamSearch'(用于提交右侧的表单)。

使用这些请求值对我有用:

values = {'doWhat':'teamSearch', 'searchOrg' : '30123','academicYear' : '2011','searchSport' : 'MBA','searchDiv' : '1'}

我使用了机械化:

import mechanize
from BeautifulSoup import BeautifulSoup
mech = mechanize.Browser() 
mech.set_handle_robots(False)
response = mech.open('http://web1.ncaa.org/stats/StatsSrv/careersearch')
mech.select_form(nr=2)
mech.form['searchOrg'] = ['30123']
mech.form['academicYear'] = ['2011']
mech.form['searchSport'] = ['MBA']
mech.form['searchDiv'] = ['1']
mech.submit()
soup = BeautifulSoup(mech.response().read())

我知道在机械化中,该网站要求序列/列表形式搜索组织,学术年,搜索体育搜索Div。 你绝对应该注意机器人,.txt。