2020年之后是大学生的估计都有一段被导员催着天天进行疫情填报的难忘经历,那么假如这件事可以一劳永逸这当然是件比较方便的事情~(当然记得要符合实际情况可不能乱上报哈)

本文是作者参考大量文章并结合自己的学习经验而成的心血之作,其中的技术包括selenium的浏览器webdriver配置,打开网页并输入账号和密码,用python对网页执行嵌入的javascript代码(这需要会看一点网页源代码),对网页的多选框checkbox(“本人承诺以上信息准确无误”选框)进行自动选中等,附加了用python如何调出浏览器开发者模式

目前第二期工作已经完成(第二期是实现填报完之后利用我的公众号《FPRSP的小屋》给自己的手机发短信提示“疫情填报完成”,并且实现定时填报(这要求程序始终运行,全程联网且可能休眠时就不会工作),由于需要处理的个人信息比较多(不可以泄露相关的隐私信息),就放在下一期)(如果想获取其他资源的话可以微信搜索关注公众号“FPRSP的小屋”,因为仅仅是大概一个月前创建的所以功能还不完善)

如果说把这个做成什么样的比较满意,我肯定认为做成手机的APP是最方便的(无奈本人目前太菜搞不了),我也试图让电脑在指定时间启动联网并且填完之后关掉电脑/锁屏的方式,包括在管理里面添加任务(但这样测试后执行不了),目前想了几种感觉比较有可能实现的方式(这个如果实现,就应当可以实现全自动化的疫情填报):

1.利用腾讯云函数,每天定时访问相关网页并执行相关操作,执行脚本并进行疫情填报

2.设置开机自启,每天定时进行重启,并调用脚本尝试连接wifi,连接wifi后执行程序进行填报

3.利用远程控制,让手机使用UDP/TCP定时向电脑广播信息,让电脑启动并且执行相关操作

4.使用pyinstaller将python脚本打包成.exe程序并且试图添加到任务管理器中(这个可能仍然无法运行)(由于电脑pyinstaller老是出错所以就鸽了。。)

一、提前配置webdriver:

参考文章:python+selenium 实现自动化交互

你需要使用chrome://version命令来查看自己谷歌浏览器的版本,然后到网站http://chromedriver.storage.googleapis.com/index.html

下载对应版本的webdriver(如果确实没有可以更新一下chrome)

然后放到(其实是随便一个位置,这个位置要记下来,在代码里面用)

二、 实现过程:
这里先贴上代码:(你需要改动里面三个内容)

# -*- coding:utf-8 -*-
import selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import timedef submit():try:driver = webdriver.Chrome(executable_path='你存储webdriver的位置\chromedriver.exe') #填写路径全名url=r'https://uis.nwpu.edu.cn/cas/login?service=https://ecampus.nwpu.edu.cn/'driver.get(url)    #使用get函数得到相应的url(地址)username = driver.find_element(by='id',value='username')StudentID='你的学号'username.send_keys(StudentID)#对应106行#       <div>#       <input class="el-input__inner"#       placeholder="请输入用户名/手机/邮箱/证件号" title="请输入用户名/手机/邮箱/证件号" id="username"secretKey = driver.find_element(by='id',value='password')#这里可以用129行或者133行的"name"-->'password'  或者 id:"password"KeyNum='你的密码'secretKey.send_keys(KeyNum)logbtn = driver.find_element(by='name',value='submit')#submit在148行被找到logbtn.click()driver.get('http://yqtb.nwpu.edu.cn/wx/xg/yz-mobile/index.jsp')driver.get('http://yqtb.nwpu.edu.cn/wx/ry/jrsb.jsp')   #访问疫情填报界面#----------------在console控制台输入js代码---------#使用execute_script来实现为此网页输入javascript代码driver.execute_script('''javascript:go_subfx();''')#使用这些代码来选择checkbox中的内容a=driver.find_element_by_class_name("weui-cell__hd")a.click()driver.execute_script('''var inputs=document.getElementById("brcn");inputs.checked=true;''')#注意!!!对于复选框,使用.check来获取是否选中,直接利用此来修改其中的值driver.execute_script('''javascript:savefx();''')time.sleep(1)driver.close()#发送信息except Exception as e:print("疫情填报失败,请检查网络")passif __name__=='__main__':submit()

其中有的地方我需要讲解一下:

首先自动使用chrome浏览器(用get来登录网站,注意要有一个参数executable_path来填写webdriver的位置)

登录网站翱翔门户:https://uis.nwpu.edu.cn/cas/login?service=https://ecampus.nwpu.edu.cn/

界面如下:

这里是需要你手动输入用户名和密码的,此时,右键“查看网络源代码”或者按下f12进入开发者模式

找到登录框的代码部分:

这里我们可以看到登录框的id是'username',

接下来使用driver.find_element_by_id(可以直接使用find_element,by写id)获得相应的部分,可以参考下面这篇文章:Python自动化页面操作

然后用send_keys输入账号和密码

成功登录后,直接访问网页yqtb.nwpu.edu.cn/wx/ry/jrsb.jsp打开每日疫情填报界面

下来是点击这个按钮“提交填报信息”

从网页源代码可以看到,这个按钮根本没有id,而且试图用其他元素get也会失败,其实他就是执行了javascript的代码

鼠标移动到按钮上,可以看到,左下角有弹出javascript:go subfx();

你可以尝试在这个界面打开f12,然后再console(控制台)里面输入这个代码,于是成功自动点击

这里使用webdriver中的execute_script为网页执行javascript代码

具体如何使用,我是参考了selenium控制浏览器执行js代码(以及一系列类似的文章)

成功点击完成这个按钮之后,接下来就是“本人承诺”这一栏填写

在源代码中,看到相应的内容:
(因为这个的type是checkbox,所以使用a.click()是没用的!只会返回一堆错误代码)

于是我参考了许多文章,找到了要的那一篇:

JS根据id、value值对checkbox设置选中状态

关键代码是  inputs[i].checked = true;

这里由于只有一个选框,用  a.checked=true;

然后控制execute_script执行javascript代码 ...

于是成功选择(“已核实以上数据”选框)

接下来就是直接js点击“填报完成”,然后关闭网页

这里附上如何自动调出开发者F12模式:selenium 模拟按键F12

三、运行结果(视频略去,不能上传视频QAQ)

(这个需要你手动启动程序,或者写个for让这个程序一直运行,再用datetime库来控制定时执行)

另外,我试过在计算机-管理-定时执行任务中,添加这个任务到定时任务中,但是在电脑睡眠状态下(就是你合上笔记本)它就无法执行(就算把“唤醒计算机执行”和“不管用户是否登录都要运行”打开也不行,使用bat控制也不行,这些都是我用发短信的形式验证过的,具体我会有下一期),但是对于计算机系的学生,比如有一个总会打开计算机的时间点,可以试试下面的方法:

windows定时执行py脚本_Yanghongru的博客-CSDN博客

创建定时任务

或者在cmd(win+R)中输入命令来创建定时任务(这个应该会更稳定一点)

Windows使用SCHTASKS 命令执行定时任务_刘李404not_found的博客-CSDN博客

此时可输入代码(把那个文件改成你想要的.py):

SCHTASKS /Create /TN calc /TR C:\windows\system32\calc.exe /SC DAILY /ST 9:00
#创建一个名字叫calc的计划任务,每天9点执行calc.exe文件

然后只要你在相应的时间点电脑处于登录状态(不可以锁屏)

它就会自动地执行帮你进行疫情填报啦~

本文章为个人原创,转载请附上链接,相关的参考文章已经在文章里面大都链接了,感谢一直以来对我的支持~

[python网络应用]用python帮你实现疫情自动填报(第一期,目前实现半自动,实现全自动会继续更新)(西北工业大学-翱翔门户疫情填报)相关推荐

  1. python实现图灵机器人帮你回复微信好友消息

    python实现图灵机器人帮你回复微信好友消息 ''' Created on 2018年4月26日@author: cvv54 '''#引入itchat包获取微信消息 import itchat fr ...

  2. 【Python】利用python进行数据分析——以新型冠状病毒疫情为例

    [Python]利用python进行数据分析--以新型冠状病毒疫情为例 重要说明 只提交该文档这一个文件,做完后提交到学习通"结课大作业"中. 1. 文件命名: 必须以学号-姓名- ...

  3. Python必应壁纸爬取系列(二):Bing唯美壁纸太多不知道选哪个?Python五行代码随机帮你挑选必应唯美屏保壁纸图片

    上一篇文章我们讲述了如何爬取必应的当天壁纸,那么今天我们就来实现如何写出一个随机必应壁纸或区域的程序.有了这个程序,我们就可以按照自己的喜好添加自己喜欢的文件并且下载了 五行代码实现程序效果图 文章目 ...

  4. 换披萨python_不限量蒜香披萨,Python和Selenium能帮我获得

    原标题:不限量蒜香披萨,Python和Selenium能帮我获得 全文共2297字,预计学习时长6分钟 图源:unsplash 我喜欢吃披萨,特别是 棒约翰的蒜香披萨棒,它简直太美味了.恰好就在我吃完 ...

  5. python编码读法-python中文读法

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 而python是测试过程中最为常用的语言之一,很多测试团队的自动化代码和用例都是使 ...

  6. Python知识体系-Python工具大全

    1.环境管理:管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. ...

  7. python编码读法-python中文读音

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本 ...

  8. python在线发音-python中文读法

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 而python是测试过程中最为常用的语言之一,很多测试团队的自动化代码和用例都是使 ...

  9. python代码库-Python常用库大全

    Python常用库大全,看看有没有你需要的. 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具 ...

最新文章

  1. MyBatisPlus插件扩展_SqlExplainInterceptor执行分析插件的使用
  2. 各种说明方法的例句_说明方法和例句
  3. oracle 数据 导出 excel 自动分多个文件,从oracle数据库中导出大量数据到excel中为什么自动分成了好几个excel文件《excel表格新手入门》...
  4. 实拍Jerry Wang去德国出差期间居住的美丽的德国小镇
  5. oracle数据库连接检查,检查Oracle数据库的最大连接
  6. 启动vue项目失败,报错Failed at the node-sass@4.14.1 postinstall script.
  7. java编程如何 实现8开立方等于2_Java之Math类使用小结
  8. Hexo文章图片存储选七牛(当然支持MD都可以)
  9. 中国剩余定理----51nod1079
  10. C# 自定义网格 dataGridView 三角箭头移动 获取当前行列序号 滚动条显示改变 滚动条定位索引
  11. GoC全教程(附各种下载、教程链接)
  12. 114企业网重金收购114库网
  13. VS Code 中解决 C++ 代码编写时的爆红
  14. 关于去除CSDN上图片的默认水印
  15. 2020版idea ij 创建web项目和以往稍有不同。
  16. HDCP Paring
  17. Python画各种爱心
  18. OCA/OCP Oracle 数据库12c考试指南读书笔记:第15章: Oracle Storage
  19. 【网络工程】8、实操-万达酒店综合项目(二)
  20. springMVC注解定时器Cron表达式编写

热门文章

  1. 深富策略:新股申购规则有那些?
  2. 数据结构学习(C++)——队列应用(事件驱动模拟) (转)
  3. 浅谈文本生成或者文本翻译解码策略
  4. java script 截断_JavaScript截取字符串的最后几个字符
  5. 企业实施ERP的效益、风险与策略
  6. Fisher线性判别分析以及python实现
  7. 用C语言实现简易的2048小游戏
  8. ARM+Movidius VPU 目标识别调试笔记(一)
  9. eclipse油藏数值模拟器的文件读写c/c++算法库libecl的使用学习1
  10. 机器视觉(十):印刷体字符识别