由于网络延迟等原因,不能保证每次填报都能够成功。本次修改在源代码基础上添加Server酱微信推送功能,方便而后出错检查。
一、第一部分(未作修改且暂时仅适配linux端):
import time
# 本地Chrome浏览器的静默模式设置:
from selenium import webdriver #从selenium库中调用webdriver模块
from selenium.webdriver.chrome.options import Options # 从options模块中调用Options类
def yqtb_nwpu():
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://uis.nwpu.edu.cn/cas/login?service=https%3A%2F%2Fecampus.nwpu.edu.cn%2Fportal-web%2Fj_spring_cas_security_check')#转到翱翔门户登陆页面
time.sleep(1)
username=driver.find_element_by_id('username')
username.clear()
username.send_keys('这里填你的学号')#抓取用户名栏并输入学号
password=driver.find_element_by_id('password')
password.clear()
password.send_keys('这里填你的密码')#抓取密码栏并输入密码
driver.find_element_by_name('submit').click()#抓取登录按钮并点击
time.sleep(1)
butt=driver.find_element_by_name('疫情每日填报')
driver.execute_script("arguments[0].click();", butt)#获取并点击疫情填报的按钮
time.sleep(1)
all_handles = driver.window_handles
driver.switch_to.window(all_handles[1])
driver.find_element_by_class_name('icon-shangbao1').click()
time.sleep(1)
driver.find_element_by_class_name('weui-btn_primary').click()#抓取提交按钮#提交
sub2=driver.find_element_by_id('brcn')
driver.execute_script("arguments[0].click();", sub2)
driver.find_element_by_id('save_div').click()
第二部分(增加微信提醒功能):
import requests
#引入requests
def notify():
api = "https://sctapi.ftqq.com/**YourSendKey**.send"
#YourSendKey是Server酱提供的
title = "填报成功"
content = "疫情填报成功了呦"
data = {
"text":title,
"desp":content
}
req = requests.post(api,data = data)
此部分增加微信提醒功能,Server酱SendKey获取方法如下:
https://sct.ftqq.com/
第三部分:
import schedule
#引入schedule
def job():
yqtb_nwpu()
notify() #填报成功时推送
#schedule.every(10).minutes.do(job) #部署每10分钟执行一次job()函数的任务
#schedule.every().hour.do(job) #部署每×小时执行一次job()函数的任务
schedule.every().day.at("10:30").do(job) #部署在每天的10:30执行job()函数的任务
#schedule.every().monday.do(job) #部署每个星期一执行job()函数的任务
#schedule.every().monday.at("23:41").do(job)#部署每周六的23:07执行函数的任务
while True:
schedule.run_pending()
time.sleep(4)
#以上都是检查部署的情况,如果任务准备就绪,就开始执行任务。
以上是本次代码的修改。