考研成绩查询脚本Python

该代码是一个用Python编写的程序,用于监听考研成绩发布。它会定期检查指定的URL,如果页面不再显示特定提示文字,说明成绩可能已公布,程序会立即将页面内容通过邮件发送给用户。用户需设置163邮箱的SMTP服务,并提供相关参数以接收邮件通知。
摘要由CSDN通过智能技术生成

考研成绩监听代码

心血来潮写了一个监听程序的代码,给23考研学子使用,可以卡卡BUG,说不定院校上传成绩的时候就可以查出来了[doge];

小白写的代码,对Python不是很了解,如果有不对的地方还请大家不吝赐教,谢谢!

代码整体思路:

  1. 请求url查看页面是否存在 “请检查您报考的招生单位是否已开通初试成绩查询功能” 关键字
  2. 如果不存在这个关键字则表示页面可能出成绩,将页面代码发送到邮箱

一、邮箱设置

步骤简述

  1. 打开163邮箱,点击设置 --> POP3/SMTP/IMAP进入SMTP设置页面;
  2. 开启SMTP服务,点击新增授权码,按提示发送短信,得到授权码,记得截图保存,否则只能删除重新添加
  3. 至此邮箱设置结束

在这里插入图片描述在这里插入图片描述

二、代码更改

需要先安装requests、MIMEText、SMTP_SSL、time的库,这里就不详细解释,自行安装

import time
import requests
from smtplib import SMTP_SSL
from email.mime.text import MIMEText

# Request address
url = "https://yz.chsi.com.cn/apply/cjcx/cjcx.do"

# Request header
headers = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

# 初始状态,判断成绩是否出,若出成绩就停止查询
Initial_Status = True


def Send_Mail(message, subject, sender_show, recipient_show, to_addrs, cc_show=''):
    # 发送邮件的配置信息(推荐使用163邮箱)
    user = '邮箱账号名'
    password = '上一步生成的SMTP密钥'
    msg = MIMEText(message, 'plain', _charset="utf-8")
    msg["Subject"] = subject
    msg["from"] = sender_show
    msg["to"] = recipient_show
    msg["Cc"] = cc_show
    with SMTP_SSL(host="smtp.163.com", port=465) as smtp:
        smtp.login(user=user, password=password)
        smtp.sendmail(from_addr=user, to_addrs=to_addrs.split(','), msg=msg.as_string())


def check_result(name, sf_id, ks_id, school_code):
    # 请求参数,主要是姓名,身份证号码,考试编号,院校代码
    params = {
        "xm": name,
        "zjhm": sf_id,
        "ksbh": ks_id,
        "bkdwdm": school_code,
    }
    res = requests.post(url, headers=headers, params=params)
    if "请检查您报考的招生单位是否已开通初试成绩查询功能" not in res.text:
        print("成绩已出")
        print("正在发送邮件...")
        # Send_Mail(发送内容, 发送主题, 发送人信息, 收件人姓名, 收件人邮箱)
        Send_Mail(res.text, "邮件的标题", "发件人昵称", "收件人昵称", "收件人邮箱")
        print("邮件发送成功!")
        global Initial_Status
        Initial_Status = False


if __name__ == '__main__':
    number = 1
    while Initial_Status:
        check_result("姓名", 身份证号码, 准考证号码, 院校代码)
        print("正在监听中...第" + str(number) + "次")
        number += 1
        # 间隔请求,单位为秒,建议10分钟以上的请求间隔,过快请求容易造成服务器崩溃,由此造成的后果由使用者负责
        time.sleep(600)

上述代码中,需要更改的地方如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,在服务器中运行就可以,等待成绩的出来

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS_Xiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值