大致介绍

上线性代数与矩阵论B的时候加了老师微信,浅问了一个问题,然后老师就认为我是一个勤奋努力的孩子,教师节的时候顺手发了个祝福,然后老师就让我当课代表收发作业了。

好多年没当课代表了,尤其是现在几乎没多少认识的人,有点诚惶诚恐,于是想着提前把班级名单爬下来,然后收作业的时候可以给人打勾,到时候给老师发过去。

想法还好,下午就要第一次收作业了,祝我好运!

爬虫代码

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
32
33
34
35
36
37
38
39
40
import requests
import parsel
import csv


def Spider():
url = "http://yjsglxt.cumtb.edu.cn/Gstudent/Course/ClassStudent.aspx?EID=boJN9rxzJT9s-R0vsK2M7ZrxGKNuWLTFwKWQAx!NdLv9WtXpfH1vCg%3d%3d&UID="
headers = {
'cookie': 'LoginType=1; DropDownListWeeks=1; ASP.NET_SessionId=iqekgu3in4kqraxef5wuddpj; DropDownListXqu=; DropDownListYx_xsbh=',
'host': 'yjsglxt.cumtb.edu.cn',
'origin': 'http://yjsglxt.cumtb.edu.cn',
'referer': 'http://yjsglxt.cumtb.edu.cn/Gstudent/Course/ClassStudent.aspx?EID=mdhL4OSciaEFztuyJzfZqXKcPFvgtDX84VosnP321!aj0H0VBxK6EA==&UID=MSJ2410100010',
'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
# 构建爬取原则
select = parsel.Selector(response.text)
results = select.xpath('//table[@id="ctl00_contentParent_dgData"]/tr').getall()
f = open("线性代数班级.csv", mode="a+", newline="", encoding="utf-8-sig")
csv_writer = csv.writer(f)
for result in results[1:-1]:
sel = parsel.Selector(result)
id = sel.xpath("//td/text()")[0].get() # 学号
name = sel.xpath("//td/text()")[1].get() # 姓名
sex = sel.xpath("//td/text()")[2].extract() # 性别
grade = sel.xpath("//td/text()")[3].extract() # 年级
college = sel.xpath("//td/text()")[4].extract() # 所属院系
major = sel.xpath("//td/text()")[-1].extract() # 专业名称

csv_writer.writerow([id, name, sex, grade, college, major])


if __name__ == '__main__':
# 以追加写的方式创建一个csv文件
f = open("线性代数班级.csv", mode="a+", newline="", encoding="utf-8-sig")
csv_writer = csv.writer(f)
csv_writer.writerow(["学号", "姓名", "性别", "年级", "所属院系", "专业名称"])
# 后面调用函数
Spider()

这个页面是个post请求,且比较奇怪的一点在于此post在原网页上并不能通过page等参数来跳转的下一页,爬虫的时候发现的规律是需要自己手动点,然后爬虫,所以为了csv文件的美观,我是把main里面的文件操作先注释,直到最后一次再取消注释,最后标签其实会写到csv文件的最后一行,需要手动剪切插入到第一行。

注意:如果自己需要修改的话,确保登录状态,然后自己按照请求头等信息修改!

效果一览

image-20240911091021104

最近工作

最近导师那边的科创中心经常安排杂活,个人的学习受到了影响,导师长时间不回复的行为有时候会让我很内耗,昨晚就想来想去失眠到1点多,仔细想了想,放弃导师的指导,自己按照培养计划研一完成毕业要求,后面自己学点东西。不抱期待,不受伤害!

昨天上了个集团专家的科技写作课,昨晚整理公司所属非核心期刊的时候发现了一篇论文给了灵感,最近今天准备读下10篇左右相关的论文并完成前置算法的学习及代码的编写,希望这个月能完成论文的初稿!