2

このサイトで POST リクエストを実行しようとしています。

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

右側のフォームには 4 つのドロップダウンがあります。以下のコードを実行すると、「学校」が頑固に選択されません。問題を引き起こしている可能性のある隠れた入力がありますが、修正できていません。ページの 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
4

2 に答える 2

2

ご想像のとおり、隠しフィールドがありません: doWhat = 'teamSearch'(右側のフォームを送信するため)。

これらのリクエスト値を使用するとうまくいきます:

values = {'doWhat':'teamSearch', 'searchOrg' : '30123','academicYear' : '2011','searchSport' : 'MBA','searchDiv' : '1'}
于 2012-08-14T21:54:52.613 に答える
0

私は機械化を使用しました:

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())

私は、サイトがsearchOrgcademicYearsearchSportsearchDivをシーケンス/リスト形式で要求していたことを知っています。robots.txt には十分注意してください。

于 2012-08-14T22:02:11.000 に答える