Python自动查询考研成绩并发送到邮箱

声明:本人原创,搬运自本人知乎。

效果请看:https://www.zhihu.com/question/368947905/answer/1016418846

使用selenium模拟浏览器操作,判断有无出成绩,若出则截图发送到邮箱。

代码如下:

import smtplib
import time
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from selenium import webdriver

'''
code : 学校代码,例如清华是10003
name : 你的名字
sfz : 身份证号码
zkz : 准考证号
address : list类型,要发生到哪些邮箱
'''


def chaxun(code, name, sfz, zkz, address):
    url = 'https://yz.chsi.com.cn/apply/cjcx/t/' + code + '.dhtml'
    options = webdriver.ChromeOptions()
    options.add_argument('-no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    browser = webdriver.Chrome(chrome_options=options)
    try:
        browser.get(url)
        input_name = browser.find_element_by_xpath('//*[@name="yzwb_xm"]')
        input_name.send_keys(name)
        input_sfz = browser.find_element_by_xpath('//*[@name="yzwb_zjhm"]')
        input_sfz.send_keys(sfz)
        input_zkz = browser.find_element_by_xpath('//*[@name="yzwb_ksbh"]')
        input_zkz.send_keys(zkz)
        button = browser.find_element_by_xpath('//*[@type="button"]')
        button.click()
        time.sleep(3)
        res = browser.get_screenshot_as_file('result_' + name + '.png')
        try:
            result = browser.find_element_by_class_name('cjcx-noresult')
            if result.text == '请检查您报考的招生单位是否已开通初试成绩查询功能':
                #send_email(name, address)
                return False
        except:
            send_email(name, address)
            return True
    except:
        print('Error!')
    finally:
        browser.close()

def send_email(name, address):
    try:
        from_addr = 'from_email' #从哪个邮箱发出,可以填自己的
        password = 'kouling' #授权码
        msg = MIMEMultipart()
        msg['Subject'] = '考研成绩'
        msg['To'] = ';'.join(address)
        msg['From'] = from_addr
        body = """
            <h3>您好!</h3>
            <p>您的考研成绩已出,请查看</p>
            <p>
            <br><img src="cid:image1"></br> 
            </p>
            """
        content = MIMEText(body, _subtype='html', _charset='utf8')
        msg.attach(content)
        fp = open('result_' + name + '.png', 'rb')
        images = MIMEImage(fp.read(), _subtype='octet-stream')
        fp.close()
        images.add_header('Content-ID', '<image1>')
        msg.attach(images)
        server = 'smtp.qq.com'
        server = smtplib.SMTP_SSL(server, 465)
        server.set_debuglevel(1)
        server.login(from_addr, password)
        server.sendmail(from_addr, address, msg.as_string())
    except Exception as e:
        print(str(e))
        print('发邮件错误')
        return False
    return True


if __name__ == '__main__':
    while 1:
        res = chaxun('code', 'name', 'sfz', 'zkz', ['email']) #填写你自己的学校代码,姓名,身份证号码,准考证号,邮箱
        if res:
            print('查询成功!')
            break
        else:
            print('成绩尚未出!')
        time.sleep(60)

复制此代码,只需填写如下信息即可

其中授权码通过以下方式获得,点击邮箱设置,启用POP3/SMTP服务,生成授权码

最后需要一台云服务器,部署上去持续运行即可。

发布了124 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36718317/article/details/104319544