需求

今天下午开组会,当半主动的向老师要求研一期间参与项目,要老师以严厉的方式对待后~

老师让把研究生选课信息发给他看,选择跟我们方向比较相关的选修课,在获取足够的选修学分同时也能对未来的项目有些许帮助

于是便有了本篇blog,下面简单带大家看一下~

爬虫分析

1、无论是以何种形式存放数据,我们需要做的第一步便是获取网站的数据,先让我们看下浏览器页面(快捷键Fn + F12)

image-20240830204148445

2、找到存放数据的文件

image-20240830204323469

3、查看请求头等信息

image-20240830204548231

4、既然通过上面分析发现数据是json格式,考虑用csv文件进行存储,因为可以按照单元格的值进行筛选

爬虫源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import requests
import json
import csv

url = 'http://125.34.90.207:8090/prod-api/psmp/lession/trainScheme/requirement?trainSchemeId=82'
headers = {
'cookie': '填写你的cookie',
'authorization': '填写你的authorization',
'host': '125.34.90.207:8090',
'referer': 'http://125.34.90.207:8090/student/plan/selectPlan',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0'
}
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
data = json.loads(response.text)
lessons = data['data']['lessionList']
# 创建csv文件存储爬取的数据
file = open('研1选课信息.csv', 'w', encoding='utf-8-sig', newline='')
csv_writer = csv.writer(file)
csv_writer.writerow(["课程编号", "课程分类", "课程性质", "课程名称", "学时", "学分"])

for lesson in lessons:
# 获取每个课程的信息
lessionNo = lesson['lessionNo'].strip() # 课程编号
lessionTypeName = lesson['lessionTypeName'].strip() # 课程分类
xingZhiName = lesson['xingZhiName'].strip() # 课程性质
lessionName = lesson['lessionName'].strip() # 课程名称
period = str(lesson['period']).strip() # 学时
credit = str(lesson['credit']).strip() # 学分

csv_writer.writerow([lessionNo, lessionTypeName, xingZhiName, lessionName, period, credit])

结果便会在本地同级目录下生成研1选课信息.csv文件,打开页面一观:

image-20240830204913995

其他

发现即使用github的CDN加速,但是有些图片加载仍然很慢~

想找一个能将图片url进行压缩显示新图片的功能网站

如果能找到,下篇博文应该会写这个了~