学生课表数据
>>> url = 'http://jwc104.ncu.edu.cn:8081/jsxsd/xskb/xskb_list.do'
>>> headers = {'Cookie':'JSESSIONID=51F956A11025525F9B508034EC78FE6D'}
>>> import requests
>>> aaa = requests.get(url,headers=headers).text
获取数据的关键就是识别验证码获取cookie 以及从一堆很…难看的HTML中解析出我们需要的课表数据。
验证码识别
先抓取一些验证码下来研究:
经过观察,只有这样几个可能出现的字母or数字
may_nums = ['b', 'c', 'm', 'n', 'v', 'x', 'z', '1', '2', '3']
重叠问题:一旦出现m则会重叠,而m出现的概率是40%
m对后面一个数图像的影响:
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 0 255 255 255 255 255]
[ 0 0 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]
[255 255 0 0 255 255 255 255]]
不受影响事所有数组:
# b
[[ 0 0 0 255 255 255 255 255]
[ 0 0 0 255 255 255 255 255]
[ 0 0 0 255 255 255 255 255]
[ 0 0 0 255 0 0 0 255]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 255 0 0 0]
[ 0 0 0 255 255 255 0 0]
[ 0 0 0 255 255 255 0 0]
[ 0 0 0 255 255 255 0 0]
[ 0 0 0 0 255 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 255 0 0 0 255]]
# c
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 0 0 0 0 0 255]
[255 0 0 0 0 0 0 255]
[ 0 0 0 255 255 255 255 255]
[ 0 0 255 255 255 255 255 255]
[ 0 0 255 255 255 255 255 255]
[ 0 0 255 255 255 255 255 255]
[ 0 0 0 255 255 255 255 255]
[255 0 0 0 0 0 0 255]
[255 255 0 0 0 0 0 255]]
# m
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 255 0 0 0 0 255]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]
[ 0 0 255 255 255 255 0 0]]
# n
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 255 255 0 0 0 0]
[ 0 0 255 0 0 0 0 0]
[ 0 0 0 0 255 255 255 0]
[ 0 0 0 255 255 255 255 0]
[ 0 0 255 255 255 255 255 0]
[ 0 0 255 255 255 255 255 0]
[ 0 0 255 255 255 255 255 0]
[ 0 0 255 255 255 255 255 0]
[ 0 0 255 255 255 255 255 0]]
# v
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 255 255 255 255 0 0]
[ 0 0 0 255 255 255 0 0]
[ 0 0 0 255 255 255 0 0]
[255 0 0 255 255 0 0 0]
[255 0 0 0 255 0 0 255]
[255 0 0 0 0 0 0 255]
[255 255 0 0 0 0 0 255]
[255 255 0 0 0 0 255 255]
[255 255 0 0 0 0 255 255]]
# x
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 0 255 255 255 0 0]
[ 0 0 0 255 255 0 0 0]
[255 0 0 0 0 0 0 255]
[255 255 0 0 0 0 255 255]
[255 255 0 0 0 0 255 255]
[255 255 0 0 0 0 0 255]
[255 0 0 0 0 0 0 255]
[ 0 0 0 255 255 0 0 0]
[ 0 0 0 255 255 255 0 0]]
# z
[[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[255 255 255 255 0 0 0 0]
[255 255 255 0 0 0 0 255]
[255 255 0 0 0 0 255 255]
[255 0 0 0 0 255 255 255]
[ 0 0 0 0 255 255 255 255]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]]
# 1 有2种
[[255 0 0 0 0 0 0 255]
[255 0 0 0 0 0 0 255]
[255 0 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 255 255 255 0 0 0 255]
[255 0 0 0 0 0 0 0]
[255 0 0 0 0 0 0 0]]
[[255 255 255 255 0 0 255 255]
[255 255 0 0 0 0 255 255]
[255 255 0 0 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 255 255 0 0 255 255]
[255 255 0 0 0 0 0 0]
[255 255 0 0 0 0 0 0]]
# 2
[[255 0 0 0 0 0 255 255]
[ 0 0 0 0 0 0 0 255]
[ 0 255 255 255 0 0 0 0]
[255 255 255 255 255 0 0 0]
[255 255 255 255 255 0 0 0]
[255 255 255 255 0 0 0 0]
[255 255 255 255 0 0 0 255]
[255 255 255 0 0 0 255 255]
[255 0 0 0 0 255 255 255]
[ 0 0 0 0 255 255 255 255]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]]
# 3
[[255 0 0 0 0 0 0 255]
[255 0 0 0 0 0 0 0]
[255 255 255 255 255 255 0 0]
[255 255 255 255 255 255 0 0]
[255 255 255 255 255 255 0 0]
[255 255 0 0 0 0 0 255]
[255 255 0 0 0 0 0 0]
[255 255 255 255 255 0 0 0]
[255 255 255 255 255 255 0 0]
[ 0 255 255 255 255 0 0 0]
[ 0 0 0 0 0 0 0 0]
[255 0 0 0 0 0 0 255]]