自动实现每日疫情上报
从 2 月开始,学校要求在学工系统进行疫情上报(每天报告体温等信息),尽管系统会自动帮忙填入昨天的数据,但每天都得登录、按一下“提交”,也得耗几十秒钟。且我记忆力并不出众,常常是收到辅导员“马上相逢无纸笔,凭君传语报平安,请您完成每日上报……”的短信之后,才掏起手机或者电脑完成上报。
于是写一个自动脚本,实现一键上报。最初准备用 requests 库写的,但发现比较麻烦,于是改用 selenium.
首先,去下载 Firefox 浏览器的驱动程序:
不采用 Chrome 的原因是,chrome driver 对 Chrome 的版本要求实在太苛刻了……而当前版本的 Firefox driver 只要求 Firefox ≥60,所以可以长期用。
下载下来之后,需要把 driver 放到一个 PATH 的目录里面。这里我往 PATH 环境变量新建了一个路径 C:\path
,实际上直接放进 system32
文件夹也是可以的。
然后安装 selenium:
conda install selenium
最终脚本如下:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time
opt = Options()
# opt.add_argument('--headless')
browser = webdriver.Firefox(options=opt)
url = 'https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/xs/yqxx'
browser.get(url)
browser.find_element_by_id('username').send_keys('11********')
browser.find_element_by_id('password').send_keys('**********')
browser.find_element_by_id('casLoginForm').submit()
time.sleep(2)
browser.get(url)
time.sleep(2)
browser.execute_script('add()')
time.sleep(1)
browser.find_element_by_id('txfscheckbox').click()
browser.execute_script('save()')
browser.close()
上面脚本在运行的时候,会在前台打开一个 Firefox ,填写用户名和密码、按下登录键、新建记录、填写记录、上报。
如果想让脚本静默运行,就解除 opt.add_argument('--headless')
注释。