使用urllib2提交搜索表单(Python)

0 投票
1 回答
713 浏览
提问于 2025-04-16 21:44

我正在尝试在学校的系统中搜索课程,登录用我的账号信息是可以的。

import urllib, urllib2, cookielib,re

username = 'user'
password = 'pass'

# Login main site
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'userid' : username, 'pwd' : password})
opener.open('https://psns.cc.stonybrook.edu/psp/he90prods/?cmd=login', login_data)

但是搜索课程却不成功,这里是我现在的情况。

# Fill in Class search criteria
search_data = {'CLASS_SRCH_WRK2_CATALOG_NBR$73$': '575', 'CLASS_SRCH_WRK2_SUBJECT$69$':'AMS'}
request = urllib2.Request('https://psns.cc.stonybrook.edu/psc/he90prods/EMPLOYEE/HRMS/c/SA_LEARNER_SERVICES.CLASS_SEARCH.GBL', urllib.urlencode(search_data))
response = opener.open(request)
print response.read()

这是我看到的内容。

https://i.stack.imgur.com/nmk0C.jpg

如果操作正确的话,应该出现这样的内容。

https://i.stack.imgur.com/BSOuJ.png

(我还不能发图片……)

我在搜索表单中做错了什么呢?

1 个回答

0

在调用 urllib2.Request() 的时候,第二个参数是 POST 数据,而不是 GET 查询字符串。如果你想发送查询字符串,可以直接把它加到网址后面:

request = urllib2.Request('https://psns.cc.stonybrook.edu/psc/he90prods/EMPLOYEE/HRMS/c/SA_LEARNER_SERVICES.CLASS_SEARCH.GBL?' + urllib.urlencode(search_data))

撰写回答