python图书馆抢座代码_“我去图书馆”代码抢座的实现因为要考研嘛,想去图书馆。我们学校是早上六点开抢,同学们太猛,我每天5点50起床抢,都不太抢的到想要的座位,于是我就花了个两三天琢磨着怎么⽤代码来实现这个抢座,⽬前已经完成,虽然因为的那个sessid更新的⽐较频繁,还是需要早起来拿写好的安卓软件传个cookie的数据,但⾄少每天都能抢到固定的座位了,⼼情就很舒畅。
抢座原理的简述
```
{
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': '{随便个⼿机抓个包扒拉下来放这就⾏}',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Referer': 'aceint/index.php/reserve/layout/libid={所抢阅览室的id号}.html&{所在学校的代码}',
'Accept-Encoding': 'gzip, deflate,br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': {实时抓包抓到的cookie值}
}
```
PS:b站不⽀持markdown也没法添加代码块,⼩伙伴们将就着看吧。
上⾯⽤⼤括号括起来的部分都是在应⽤中需要改变的部分,包括:
关于python的书1、所抢阅览室的id号;
2、⼀段莫名其妙的编码;
3、该阅览室座位号对应的编码;
4、所在学校的代码;
5、实时抓包抓到的cookie值。
其中,1和4都是可以通过抓包轻⽽易举地得到的。关于抓包,学习起来难度很低,如果不会的⼩伙伴可以通过搜索⼀些⽂章轻松地完成学习。5是需要每天起早抓包得到并放⼊程序运⾏的内容,承载着⽤户信息,也很容易获取到。真正需要进⾏⼀些操作去获取的是2和3。将这些内容填⼊到get请求中,通过代码模拟⼿机发送get请求,就能够完成抢座。
获取座位号对应的编码
在使⽤“我去图书馆”进⾏抢座的时候,在进⾏抢座前我们都会进⼊⼀个页⾯,选定要选的座位之后点击抢座。通过分析⽹页源码,很容易定位座位元素的代码,座位元素的模板如下所⽰。
```
{显⽰的座位号}
```
知道了座位号和编码是如何映射的,只要从页⾯中爬取数据就可以了,代码如下所⽰。
```
from bs4 import BeautifulSoup
bs = BeautifulSoup(html, 'html.parser') #html是爬取到的⽹页的⽂本
zw = dict() #创建⼀个字典,⽤来存放座位号和编码的映射
div_tags = bs.find_all('div', {'class': 'grid_cell'})
for tag in div_tags:
zwid = ts[1].string
if zwid != None and zwid != '窗' and zwid != '柱':
zw[zwid] = ('data-key')
```
通过这样⼀个映射的获取,我们就可以⽅便地通过座位号获取到其对应的编码了。
如何获取那⼀段莫名其妙的编码
在编写代码的过程中,我对抢座位这个过程进⾏的多次的抓包观察,发现在座位号前⾯的那个query字符串是⼀个看不出什么规律的编码。解析这个query是在后端进⾏解析,但既然发get请求你要在页⾯上发,那这个代码必然在前端是有迹可循的。这个编码的答案就在页⾯底部的js链接中,通过运⾏那⼀段js代码就可以搞定这个编码,从⽽拼凑起这最后⼀块拼图。
感谢各位能够看完这篇⽂章,如果有什么不理解的地⽅或者需要我的⼀些帮助,可以私信我