影刀RPA新手教程:学生党入门完全指南——课表导入、图书馆抢座与学术资源自动采集

📅 2026/7/7 7:18:38 👁️ 阅读次数 📝 编程学习
影刀RPA新手教程:学生党入门完全指南——课表导入、图书馆抢座与学术资源自动采集

影刀RPA新手教程:学生党入门完全指南——课表导入、图书馆抢座与学术资源自动采集

我大三那年,图书馆座位要靠抢。

每天晚上12点系统开放第二天预约,手动点根本抢不到。室友让我帮他写一个自动抢座的脚本,我研究了两天影刀RPA,真的抢到了。

那一刻我发现,RPA不是程序员的专利,学生也能用,而且用好了能解决很多实际问题。

这篇文章围绕"图书馆抢座+课表管理+学术资源采集"三个真实场景展开,全部是我自己用过的功能。你跟着做完,能直接用到你自己的学习和生活里。

一、安装与准备:学生党零成本上手

影刀RPA社区版完全免费,学生用足够了。去官网下载Windows版,安装过程和装QQ没什么区别。

我第一次装的时候,卡在浏览器插件这一步。Chrome要在扩展程序里开启"开发者模式",然后才能安装影刀的插件。这个步骤官方文档写得不清楚,我折腾了半小时。

装完之后,打开影刀,你会看到新建流程的按钮。流程就是你的自动化程序,一个流程解决一个具体问题。

界面分三块:左边是指令库,中间是流程画布(你拖指令进来拼流程的地方),右边是属性面板(选中某个指令后在这里填参数)。

学生党建议先把界面熟悉15分钟,把每个大类指令都点开看看。这比直接开始做项目效率高得多,因为你知道有哪些指令可用,做的时候不用现查。

二、元素定位四合一:搞定学校系统的关键

学校的内网系统,大多又老又难用。元素定位是你必须掌握的核心技能。

四合一:元素捕获、XPath、CSS选择器、正则表达式,四种方法配合用。

元素捕获最简单,点一下目标位置就行。但学校系统经常用动态id,每次刷新id都变,这时候元素捕获就失效了。

XPath按文字定位是学校系统最好用的方式:

//button[text()='预约座位'] ← 按按钮文字定位,学校系统通用 //a[contains(text(),'图书馆')] ← 包含"图书馆"三个字的链接 //input[@placeholder='请输入学号'] ← 按placeholder定位输入框 //div[@class='seat-item'] ← 按class定位座位元素 //table[@id='schedule']//tr ← 定位课表的所有行

CSS选择器比XPath快,语法也更简洁:

button:contains('预约')← 包含"预约"文字的按钮(影刀支持) .seat-item:nth-child(3)← 第3个座位 input[placeholder*='学号'] ← placeholder包含"学号"的输入框 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0130afe0fe6c4505bb655eecfc9d6465.png#pic_center)

正则表达式用在什么场景?学校系统的页面源码经常是一团乱码,价格(哦不对,座位号)藏在里面,用正则提取最方便:

座位号[::]\s*(\d+) ← 提取座位号 图书馆.*?(\d{4}-\d{2}-\d{2}) ← 提取日期

我当时抢图书馆座位,发现座位按钮的id是动态生成的(seat_12345这样的格式),XPath用//div[contains(@id,'seat_')]就匹配到了所有座位。

三、变量与数据类型:让RPA记住你的学号课表

变量就是让流程"记住"一些信息。你的学号、密码、喜欢的座位号,都要存在变量里。

数字类型用来存座位号、课程节次这些。字符串用来存学号、密码、课程名称。

# 学号和密码存在字符串变量里student_id="2021012345"password="your_password"[video(video-vJZVOqYC-1783321038748)(type-csdn)(url-https://live.csdn.net/v/embed/525000)(image-https://v-blog.csdnimg.cn/asset/23da3fe1f67a47106d725406cfde9a97/cover/Cover0.jpg)(title-拼多多店群自动化上架方案)]

列表用来存一周的课程安排,或者一批要预约的日期:

# 周一的课程列表monday_schedule=["高等数学","大学英语","程序设计"]

字典用来存课程表和教室的对应关系,这个我在做课表导入的时候用得非常多:

# 课程-教室映射course_room={"高等数学":"教一楼201","大学英语":"教三楼105",![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/64f301432b744cabb2e8fefbf599a8cb.png#pic_center)"程序设计":"机房A"}

JSON处理在对接学校API的时候会用到。有些学校的系统有开放接口,返回的是JSON格式,要先转成JSON对象才能提取字段。

我当时踩过的坑:变量名用中文还是英文?我的建议是统一用英文或者统一用中文拼音,不要混着来。我见过有人用var1、var2这种命名,一周后再看自己都看不懂了。

四、流程控制:让抢座流程会"思考"

流程控制就是让机器人会判断、会重复。抢图书馆座位的逻辑是:“如果座位可用就点预约,不可用时就等一会儿再刷新看看”。

If条件判断的基本用法:

# 抢座逻辑seat_available=Trueifseat_available:print("点击预约")else:print("等待刷新")

循环有四种,各种场景都要会:

For次数循环:你知道要循环几次的场景。比如预约一周的座位,循环7次。

ForEach列表循环:你有一批数据要逐个处理。比如课表里有5门课,逐个添加到日历里。

While条件循环:不知道要循环多少次。比如刷新页面直到座位变为可预约状态,就用While循环。

相似元素循环:页面上有一排座位按钮,用相似元素循环逐个检查每个座位的状态。

# While循环实现"等座位释放"whileseat_taken:time.sleep(30)# 等30秒refresh_page()# 刷新页面seat_taken=check_seat_status()# 重新检查

Try-Catch我建议在所有关键步骤都加上。网络断了、页面卡了、学校服务器崩了——这些意外情况都要能优雅地处理,而不是直接崩溃。

我第一次写抢座流程没加Try-Catch,跑了一晚上,半夜学校服务器维护了,流程直接报错停了。第二天早上起来发现什么都没抢到。

五、网页自动化:搞定学校内网系统

学校的内网系统大多是老旧的Web页面,有很多坑。这一节把我踩过的坑全部告诉你。

等待策略非常重要。学校服务器响应慢,不能点完就立刻下一步。我一般用"元素出现再继续",等待时间设5-10秒。

弹窗处理在学校系统里特别常见。有些学校系统会弹"欢迎使用"的提示框,要手动点掉才能继续。

我总结的弹窗处理流程:先Try-Catch包住操作,Catch里判断弹窗是否存在,存在就点关闭。如果关不掉,发ESC键。还不行就用图像识别点关闭按钮。

翻页在采集学术资源的时候会用到。知网、万方的搜索结果有好几页,要自动翻页采集。

不确定总页数的处理方式:判断"下一页"按钮是否可点击(disabled属性),可点击就继续翻,不可点击就停止。

//a[@class='next-page' and not(contains(@class,'disabled'))]

懒加载在学术资源网站很常见。滚动页面才会加载更多论文。处理方案:先记当前论文数量,然后向下滚动,再统计一次,数量不变就说明加载完了。

iframe在学校系统里非常常见。有些学校把登录框放在iframe里,不切换到iframe是捕获不到登录输入框的。

窗口切换:有些学校系统点击"查看详情"会弹出新窗口,要用"切换到指定窗口"指令。

六、数据处理:课表和学术资源的格式化

学生党用RPA,数据处理主要做两件事:课表整理和学术文献信息提取。

Excel读写是最常用的。把学校系统里的课表导出成Excel,或者把采集到的论文信息存入Excel。

# 用Python处理课表Excelimportpandasaspd# 读取课表df=pd.read_excel("课表.xls")# 按星期几排序df=df.sort_values("星期")# 保存df.to_excel("课表_整理后.xls",index=False)

文本提取与清洗,在采集论文摘要的时候非常有用。知网的论文页面源码里,摘要藏在meta标签或者div里,用正则表达式能提取出来:

importre html="<meta name='description' content='本文研究了...'>"abstract=re.findall(r"content='(.+?)'",html)[0]![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/918bf65533544cb18e20a395990ef809.png#pic_center)

JSON解析在调用学术API的时候用到。有些学校买了知网的API接口,返回JSON格式,要解析后提取标题、作者、摘要。

数据库连接我用MySQL存我采集的论文数据,方便按关键词搜索。五个常见报错:

  1. 连接超时——学校内网有时候不稳定,加热重试
  2. 中文乱码——连接串加charset=utf8mb4
  3. 字段超长——摘要很长的论文,数据库字段要设够长
  4. 批量插入失败——用executemany,不要一条条插
  5. 连接泄漏——用完必须关闭连接

七、鼠标键盘图像自动化:处理非网页场景

学校有一些系统不是网页版的,是桌面客户端。这时候要用鼠标键盘模拟。

模拟模式和驱动模式的区别:模拟模式快但容易被检测,驱动模式慢但更真实。学校系统一般不检测,两种都可以。

图像识别在图书馆预约系统里非常好用。有些学校的预约系统是Flash做的(虽然Flash已经死了,但有些老系统还在用),网页元素捕获不到,只能用图像识别。

# 图像识别点击"预约"按钮# 截取"预约"按钮的图片保存为 reserve_btn.png# 等待图片出现(reserve_btn.png)# 点击图片(reserve_btn.png, 锚点=中心)

我记得当时学校的图书馆系统,预约按钮是用Canvas绘制的,任何网页元素捕获工具都抓不到。最后用图像识别解决了,准确率大概95%,剩下的5%加个重试逻辑就稳了。

锚点9位置+偏移:图像识别默认识别图片中心,但有些按钮点中心没反应(比如预约按钮左边是图标右边是文字,点文字才有效),这时候要用偏移。

八、进阶技能:学术资源采集的高阶玩法

HTTP请求对接学术数据库API。知网、万方、维普都有API接口(学校买了的话),直接调API比网页抓取稳定得多。

importrequests# 知网API示例(伪代码,实际需要学校授权)url="https://api.cnki.net/_search"params={"keyword":"机器学习","year":"2023-2024"}resp=requests.get(url,params=params)papers=resp.json()["data"]["list"]

Python协同方面,我用Python做了文献关键词提取。采集到一堆论文标题和摘要之后,用jieba分词提取关键词,帮我快速了解一个领域的研究热点。

importjieba.analyse text="本文研究了基于深度学习的图像识别方法..."keywords=jieba.analyse.extract_tags(text,topK=5)print(keywords)

OCR文字识别用来处理扫描版PDF论文。有些论文是图片格式的PDF,要用OCR把文字识别出来才能搜索。

ADB手机自动化用来在手机上操作知网手机版。有些学校买了知网移动版,在手机上能免费下载论文,用RPA自动下载。

TEMU店群如何管理运营?

九、平台实战:学术资源采集的完整流程

知网采集是我做过的最复杂的学术采集项目。流程是:搜索关键词 → 逐一点开论文详情 → 采集标题、作者、摘要、引用量 → 下一页 → 循环。

知网的反爬措施比较严。我的方案:每次操作之间加随机等待(2-5秒),模拟真人浏览;不要高频访问,一小时控制在100篇以内;用学校IP访问(在学校内网环境下跑流程)。

万方和维普的结构类似,但页面元素不一样,XPath要重新写。我建议把三个平台的采集流程分别封装成子流程,主流程按顺序调用。

图书馆资源除了知网,还有超星电子书、读秀学术搜索等。超星的页面是动态加载的,要处理懒加载。

十、系统联动:课表通知和团队共享

飞书消息通知用来每天提醒今天的课程。流程每天早上7点自动运行,读取当天课表,发飞书消息提醒。

飞书多维表格用来和室友共享课程信息。我们宿舍四个人,每个人的课表都存在多维表格里,可以方便的找到大家都有空的时间。

邮件发送用来把采集到的论文清单发给导师。有些导师不喜欢飞书,习惯用邮件,所以要支持邮件发送报告。

定时任务配置:课表提醒是每天早上7点跑;图书馆抢座是每天晚上11:55开始跑(12点开放预约);学术资源采集是每周跑一次,追踪某个关键词的最新论文。

十一、工程化与规范:学生项目的自我管理

子流程封装:我把抢座流程拆成了登录子流程、查询座位子流程、预约子流程、通知子流程。这样做的好处是调试方便,哪个环节出问题改哪个。

调试技巧:打断点是最基本的。我还会在关键步骤后面加"打印日志",把当前状态输出出来。比如"当前正在预约日期:2024-03-15",出问题的时候一看日志就知道卡在哪了。

命名规范:变量名要有意义。room_number比a好,course_name比b好。这个问题在流程复杂之后会非常明显——你一周后再看,完全看不懂a、b、c代表什么。

版本选择:学生用社区版就够了。如果学校买了企业版授权(有些高校买了影刀的教育版),可以用企业版,功能更多。

流程模板化:我做了抢座模板、课表模板、学术采集模板,新需求来了在模板基础上改,效率提升很多。

十二、速查表与常见报错:学生党常见问题汇总

元素定位失败:学校系统多用动态id,不要用id定位,改用class或者文字定位。

XPath语法报错:学校系统的页面 often 有命名空间(xmlns),导致XPath失效。解决方案是在XPath开头加/*[local-name()='xxx'],或者直接用CSS选择器。

Excel报错:学校导出的课表经常是.xls格式(老版Excel),要用对应的指令读取,不要用.xlsx的指令。

循环报错:采集学术资源的时候,If判断漏掉了一些边界情况(比如某篇论文没有摘要),导致流程中断。解决方法是所有数据采集步骤都用Try-Catch包起来。

弹窗拦截:学校系统经常弹出"温馨提示"之类的弹窗,要用"处理浏览器弹窗"指令。

网络问题:学校内网有时候不稳定,所有HTTP请求和页面跳转都要加固态等待或者重试逻辑。

我整理了一份学生党常用的XPath和CSS速查表,放在 home.linyan.cloud,需要的话可以自取。


#影刀RPA #RPA教程 #学生党 #图书馆抢座 #学术采集

作者:林焱