0x2a

Don't Panic.

Steve's avatar Steve

Python实现发送正方教务系统选课请求

本文将讲述如何使用 Python3 + Requests 发送正方教务系统选课请求.

分析请求

首先 使用requests.seesion() 模拟登录正方教务系统并保存登录信息 (如果对正方教务模拟登陆有疑问可以Google一下或者参考我的这篇博文:Python实现广州大学教务系统模拟登陆 )

然后分析一下获得选课页面的请求

__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:省略一万个字符
__VIEWSTATEGENERATOR:03DFB912
ddl_kcxz:
ddl_ywyl:
ddl_kcgs:
ddl_xqbs:1
ddl_sksj:
TextBox1:
dpkcmcGrid:txtChoosePage:1
dpkcmcGrid:txtPageSize:6
dpDataGrid2:txtChoosePage:1
dpDataGrid2:txtPageSize:100

其中 __VIEWSTATE 和 __VIEWSTATEGENERATOR两个参数是在页面源码里提取的 最丧心病狂的是__VIEWSTATE 差不多得有一万字符在里面…

不过用 BeautifulSoup 可以很好地将他们提取出来


def get__VIEWSTATE2(response):
    '''解析获得选课页面view函数'''
    html = response.content.decode("gbk")
    soup = BeautifulSoup(html, "html.parser")
    __VIEWSTATE = soup.findAll(name="input")[2]["value"]
    __VIEWSTATEGENERATOR  = soup.findAll(name="input")[3]["value"]
    return __VIEWSTATE, __VIEWSTATEGENERATOR

具体的页面解析要具体分析 这里只是一个例子 不过都大同小异

然后dpkcmcGrid:txtChoosePage这个参数是值选课页面的第几页
dpkcmcGrid:txtPageSize这个是每个页面显示的课程数(最大为100)

———————未完持续——————