浙江省考试院高考录取状态查询
【 一、所用技术 】
python3.7
selenium
ddddocr
注:全程使用dos命令执行
【 二、前提准备 】
系统 | windows |
---|---|
PYTHON | 3.8 |
SELENIUM | 3.141.0 |
浏览器 |
- 关于selenium的下载:
由于pip直接下载selenium会获取最新版,所以建议下载使用以下代码
pip install selenium==3.141.0
- 关于浏览器驱动下载:
参考一下文章:
https://zhuanlan.zhihu.com/p/373688337
【 三、代码 】
import time
import os
import ddddocr # 导入 ddddocr
# 导入selenium包
from selenium import webdriver
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart
# 打开Chrome浏览器
option = webdriver.ChromeOptions()
# option.add_argument("headless")
#防止打印一些无用的日志
option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
driver = webdriver.Chrome(chrome_options=option)
#driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.get("https://pgzy.zjzs.net:4431/login.htm")
driver.find_element_by_id("shenfenzheng").send_keys('3333')
driver.find_element_by_id("mima").send_keys('1234')
driver.find_element_by_id("imgVerify").click()
time.sleep(0.5)
# 定位验证码 保存验证码进行识别
# driver.maximize_window()
picture_name2 = 'code'+ '.jpg'
try:
driver.find_element_by_id('imgVerify').screenshot(picture_name2)
ocr = ddddocr.DdddOcr(show_ad=False) # 实例化
with open('code.jpg', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res = ocr.classification(img_bytes) # 识别 H4PX
driver.find_element_by_id("yzm").send_keys(res)
driver.find_element_by_id("btnSubmit").click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="mb2"]').click()
driver.find_element_by_xpath('//*[@id="div74"]').click()
driver.switch_to.frame("pageurl") # 2.用id来定位
lq = driver.find_element_by_xpath("/html/body/div/table/tbody/tr[2]/td").text
if lq != '未查询到录取情况':
driver.find_element_by_xpath('/html/body').screenshot("lq.jpg")
except Exception:
driver.quit()
#退出
time.sleep(1)
driver.quit()
# ==========================邮箱发送部分=======================================
print(lq)
my_sender = '556@qq.com' # 发件人邮箱账号
my_pass = 'xxxxxxx' # 发件人邮箱授权码
my_user = '556@qq.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret = True
try:
# 添加图片附件
print("发送中")
imageFile = r"D:\桌面\pybat\lq.jpg"
imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
msg = MIMEMultipart()
msg['From'] = formataddr(["cjx", my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["yyj", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = "录取结果已出,可以查询!!!" # 邮件的主题,也可以说是标题
msg.attach(imageApart)
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱授权码
server.sendmail(my_sender, [my_user ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
print("发送end")
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(e)
ret = False
return ret
if lq != '未查询到录取情况':
ret = mail()
print("邮件已经发出")
else:
print("等待录取结果")
查询到对应结果后自动截图并将图片发送到指定邮箱
【 四、自动化执行 】
@echo off
mode con cols=35 lines=6 & color 5B
:start
echo running....
ping -n 60 127.1>NUL
start "" test.py
set /a last+=1
echo Number of program runs : %last%
goto start
有问题欢迎大家指正