Python实现提前查询考研成绩功能

目录
  • 一、填写相关信息
  • 二、发件人Email说明
  • 三、代码实现
    • 1. 查询成绩并且发送到邮箱版本
    • 2. 查询成绩并且砍掉了发送邮件版本
  • 四、使用效果

一、填写相关信息

使用时请先在代码所在目录新建 info.json,内容如下

{
    "xm": "上岸人",
    "zjhm": "xxx",
    "ksbh": "xxx",
    "bkdwdm": "xxx",
    "sendEmail":"xxx",
    "code":"xxx",
    "toAddr":"xxx",
    "key":"xxx",
    "time":"120"
}

并且根据如下字段说明将 info.json 中各个字段修改为需要查询的考研人的信息(准考证上都有)

xm:姓名

zjhm:身份证号

ksbh:考生编号

bkdwdm:报考单位编号

sendEmail:发件人Email(可以是自己的Email)

code:发件人Email授权码

toAddr:收件人Email

key:最后一门考的专业课名称或者所含字符,例如数据结构可以填写数据结构或数据

time:每隔多少秒查询一次

二、发件人Email说明

可以使用QQ邮箱

进入Web端,点击设置 > 账户 > POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

理论上只要开启SMTP服务,然而反正在邮件客户端登录都是需要授权码的,不如把这些服务都开了

然后点击生成授权码

三、代码实现

1. 查询成绩并且发送到邮箱版本

一旦有查询结果会直接发送到邮箱

#我的Python交流群:748989764
import json
import random
import sys
import time
import requests
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# import urllib3
# urllib3.disable_warnings()

url = "https://yz.chsi.com.cn/apply/cjcx/cjcx.do"
with open('info.json', 'r', encoding='UTF-8') as f:
    info = json.load(f)
# temp = "https://yz.chsi.com.cn/apply/cjcx/t/" + info["bkdwdm"] + ".dhtml"

class EmailOP:
    def __init__(self, host, port, user, password):
        """
        host:邮件服务器地址
        port:邮件服务器端口
        user:邮箱账户名
        password:邮箱账户的授权码(注意是授权码,不是邮箱的登录密码)
        """
        self.user = user
        self.password = password
        self.smtp = smtplib.SMTP()  # 创建SMTP对象
        self.smtp.connect(host=host, port=port)  # 连接到SMTP服务器
        self.smtp.login(user=self.user, password=self.password)  # 登录邮箱

    def send(self, From, To, Subject, Context, to_addrs):
        """
        Context:邮件正文
        From:发送者昵称(随便取)
        To:接收者昵称(随便取)
        Subject:邮件主题
        to_addrs: 收件人邮箱地址
        """
        message = MIMEText(Context, 'plain', 'utf-8')
        message['From'] = Header(From)
        message['To'] = Header(To)
        message['Subject'] = Header(Subject)
        self.smtp.sendmail(from_addr=self.user, to_addrs=to_addrs, msg=message.as_string())

def main():
    headers_list = [
        {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 10; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.77 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666'
        }, {
            'user-agent': 'Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.188 Safari/537.36 CrKey/1.54.250320'
        }, {
            'user-agent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+'
        }, {
            'user-agent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)'
        }, {
            'user-agent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
        }, {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'
        }, {
            "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 Edg/109.0.1518.78"
        }
    ]

    head = {
        "User-Agent": str(random.choice(headers_list)["user-agent"]),
        "Referer": "https://yz.chsi.com.cn/apply/cjcx/t/" + info["bkdwdm"] + ".dhtml"
    }
    data = {
        "xm": info["xm"],
        "zjhm": info["zjhm"],
        "ksbh": info["ksbh"],
        "bkdwdm": info["bkdwdm"],
        "checkcode": ""
    }

    try:
        res = requests.post(url=url, headers=head, data=data)
        if res.ok == True:
            if info["key"] in res.text:
                print("[LOG] !!!已查询到成绩")
                email_op = EmailOP(host="smtp.qq.com", port=25, user=info["sendEmail"], password=info["code"])
                email_op.send(From="996考研成绩查询机器人", To=info["xm"], Subject=info["xm"] + "您好,已查到成绩!!!", Context=res.text,
                              to_addrs=info["toAddr"])
                sys.exit()
            else:
                print("[LOG] 未查询到结果")
                res.close()
        else:
            res.close()
            print("[ERROR] 网络错误,HTTP响应状态码:" + str(res.status_code))
            email_op = EmailOP(host="smtp.qq.com", port=25, user=info["sendEmail"], password=info["code"])
            email_op.send(From="996考研成绩查询机器人", To="程序猿", Subject="报错了!快去修BUG!", Context="网络错误,HTTP响应状态码:" + str(res.status_code),
                          to_addrs=info["toAddr"])
    except requests.exceptions.RequestException as e:
        email_op = EmailOP(host="smtp.qq.com", port=25, user=info["sendEmail"], password=info["code"])
        email_op.send(From="996考研成绩查询机器人", To="程序猿", Subject="报错了!快去修BUG!", Context="捕捉到异常,请查看程序,若程序停止请重新打开",
                      to_addrs=info["toAddr"])

if __name__ == '__main__':
    print("[LOG] 服务已开启")
    print("[LOG] 每间隔" + info["time"] + "秒查询1次")
    try:
        # 登录邮箱
        email_op = EmailOP(host="smtp.qq.com", port=25, user=info["sendEmail"], password=info["code"])
        # 发送邮件
        email_op.send(From="996考研成绩查询机器人", To=info["xm"], Subject="服务已开启", Context=info["xm"] + "您好,已经开始为您查询成绩",
                      to_addrs=info["toAddr"])
    except smtplib.SMTPAuthenticationError as e:
        print("[ERROR] 登录邮箱出现问题,请检查info.json中sendEmail与code字段是否填写正确")
        print("[ERROR] sendEmail填写发件人邮箱,code填写授权码")
        print("[ERROR] !!!注意是授权码,不是邮箱的登录密码")
        sys.exit()

    count = 0
    while True:
        try:
            count += 1
            print(f"[LOG] 第{count}次查询")
            main()
            time.sleep(int(info["time"]))
        except requests.exceptions.RequestException as e:
            email_op = EmailOP(host="smtp.qq.com", port=25, user=info["sendEmail"], password=info["code"])
            email_op.send(From="996考研成绩查询机器人", To="程序猿", Subject="报错了!快去修BUG!", Context="捕捉到异常,请查看程序,若程序停止请重新打开",
                          to_addrs=info["toAddr"])
            main()
            time.sleep(int(info["time"]))

2. 查询成绩并且砍掉了发送邮件版本

一旦有查询结果会保存当前目录的res.html

#我的Python交流群:748989764
import json
import random
import sys
import time
import requests
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# import urllib3
# urllib3.disable_warnings()

url = "https://yz.chsi.com.cn/apply/cjcx/cjcx.do"
with open('info.json', 'r', encoding='UTF-8') as f:
    info = json.load(f)
# temp = "https://yz.chsi.com.cn/apply/cjcx/t/" + info["bkdwdm"] + ".dhtml"

def main():
    headers_list = [
        {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 10; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.77 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666'
        }, {
            'user-agent': 'Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.188 Safari/537.36 CrKey/1.54.250320'
        }, {
            'user-agent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+'
        }, {
            'user-agent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)'
        }, {
            'user-agent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
        }, {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
        }, {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
        }, {
            'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'
        }, {
            "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 Edg/109.0.1518.78"
        }
    ]

    head = {
        "User-Agent": str(random.choice(headers_list)["user-agent"]),
        "Referer": "https://yz.chsi.com.cn/apply/cjcx/t/" + info["bkdwdm"] + ".dhtml"
    }
    data = {
        "xm": info["xm"],
        "zjhm": info["zjhm"],
        "ksbh": info["ksbh"],
        "bkdwdm": info["bkdwdm"],
        "checkcode": ""
    }

    try:
        res = requests.post(url=url, headers=head, data=data)
        if res.ok == True:
            if info["key"] in res.text:
                print("[LOG]  !!!已查询到成绩")
                with open("res.html", "w+", encoding='utf8') as f:
                    f.write(res.text)
                sys.exit()
            else:
                print("[LOG] 未查询到结果")
                res.close()
        else:
            res.close()
            print("[ERROR] 网络错误,HTTP响应状态码:" + str(res.status_code))
    except requests.exceptions.RequestException as e:
        print("[ERROR] 捕捉到异常,请查看程序,若程序停止请重新打开")

if __name__ == '__main__':
    print("[LOG] 每间隔" + info["time"] + "秒查询1次")
    count = 0
    while True:
        try:
            count += 1
            print(f"[LOG] 第{count}次查询")
            main()
            time.sleep(int(info["time"]))
        except requests.exceptions.RequestException as e:
            print("[ERROR] 捕捉到异常,请查看程序,若程序停止请重新打开")
            main()
            time.sleep(int(info["time"]))

四、使用效果

到此这篇关于Python实现提前查询考研成绩的文章就介绍到这了,更多相关Python查询考研成绩内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python超详细实现完整学生成绩管理系统

    目录 学生成绩管理系统简介 源代码 students.txt main.py Login.py db.py MenuPage.py view.py 学生成绩管理系统简介 一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用tkinter库进行制作,利用.txt文件进行存储数据) 源代码 仅供学习参考,最好还是自己多敲多练习(实践是检验真理的唯一标准) students.txt 用于存储数据 main.py from tkinter import * from Login imp

  • python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer): self.data = data self.next = pointer # 创建单链表 class SingleLinkedList(object): def __init__(self): self.head = Node(None, None) self.point = self.hea

  • python实现简单成绩录入系统

    学了一个多月的python,做了一个小程序:python实现简单成绩录入系统,实验一下 menu部分 from tkinter import*#这是一个python模块,python3中都有 import tkinter.messagebox#这也是一个模块 from file_read import read from file_write import write class student_main():#定义一个学生类 def __init__(self): self.name =''

  • python创建学生成绩管理系统

    python学生成绩管理系统创建,供大家参考,具体内容如下 要求编写学生类,班级类,并在电脑运行生成表单,输入一个数字,得到对应的结果. 输出样式 代码如下 学生类 class Student: def __init__(self,sno,name,english,math): self.sno=sno self.name=name self.__english=english self.__math=math @property def english(self): return self._

  • python利用pandas分析学生期末成绩实例代码

    安装Pandas Pandas是构建在Python编程语言之上的一个快速.强大.灵活且易于使用的开源数据分析和操作工具.Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集. 我们使用pip进行安装(如果没有可自行查询如何安装pip)安装panda最简单的方法是将其作为Anaconda的一部分安装,Anaconda主要用于数据分析和科学计算.还提供源代码.PyPI.ActivePython.各种Linux发行版或开发版本进行安装的说明. 当然,最为基础的Python环境还

  • Python实现提前查询考研成绩功能

    目录 一.填写相关信息 二.发件人Email说明 三.代码实现 1. 查询成绩并且发送到邮箱版本 2. 查询成绩并且砍掉了发送邮件版本 四.使用效果 一.填写相关信息 使用时请先在代码所在目录新建 info.json,内容如下 { "xm": "上岸人", "zjhm": "xxx", "ksbh": "xxx", "bkdwdm": "xxx",

  • Python实现的查询mysql数据库并通过邮件发送信息功能

    本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能.分享给大家供大家参考,具体如下: 这里使用Python查询mysql数据库,并通过邮件发送宕机信息. Python代码如下: #-*- coding: UTF-8 -*- #!/usr/bin/env python ''''' author:qlzhong Created on 2015-6-29 征途宕机日志统计汇总 ''' import MySQLdb import time import datetime impo

  • 使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用Python爬虫结合wxpython模块构造一个NBA爬虫小软件 本文框架构造将分为二个部分讲解: 构建GUI界面举例套用爬虫框架 主要涉及的Python模块有 requests wx pymysql pand

  • 使用Python实现跳一跳自动跳跃功能

    1.   OpenCV:模板匹配.    获得小跳棋中心位置 2.   OpenCV:边缘检测.    获得下一方块中心位置 Python+ADB+OpenCv,实现「 跳一跳 」自动化. / 01 / ADB ADB工具即Android Debug Bridge(安卓调试桥) tools. ADB 是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互. 与之前小F接触过的Appium有点相似. ADB的安装很简单,就是将安装包解压后,将路径添加到系统的环境变量中即可. 然后使用Python

  • python+selenium实现自动抢票功能实例代码

    简介 什么是Selenium? Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列,采用Javascript来管理整个测试过程,包括读入测试套件.执行测试和记录测试结果.它采用Javascript单元测试工具JSUnit为核心,模拟真实用户操作,包括浏览页面.点击链接.输入文字.提交表单.触发鼠标事件等等,并且能够对页面结果进行种种验证.也就是说,只要在测试用例中把预期的用户行为与结果都描述出来,我们就得到了一个可以自动化运行的功能测试套件.(Selenium的

  • python轻量级orm框架 peewee常用功能速查详情

    目录 一.常见orm数据库框架 1.peewee 简单demo 二.Model 和 Field 关系 三.Model 模型 四.Filed 字段 1.字段初始化参数 2.字段特有参数 3.字段默认参数 4.索引 五.基本操作 增删改查 1.创建 2.删除 3.更新 4.查询 5.事务 6.过滤 7.记录分类 8.计数 9.分页 六.聚合查询 七.Scalar 八.窗口 九.复杂筛选 1.查询中支持的筛选运算符 2.筛选方法 3.联合查询逻辑操作 十.SQL 方法 1.SQL helper 2.安

  • Python实战之设计一个多功能办公小工具

    目录 UI排版布局 图形界面的设计思想 实现步骤 界面布局 "直达"函数 "天气"函数 UI排版布局 主页通过分页栏来划分不同的界面,以及窗体最小化,最大化,关闭功能. 应用.网页直达页由简单的按钮组成,前后对正.左右标齐. 天气查询栏,有简单的"按钮.输入框.标签框"组成. 界面美化方面采用的是"插画"的元素,因为放入一整张照片不仅会填充整个界面,而且也很不好看. 图形界面的设计思想 图形界面我采用的是Python自带的tk

  • Python+Tkinter简单实现注册登录功能

    本文实例为大家分享了Python+Tkinter简单实现注册登录功能的具体代码,供大家参考,具体内容如下 项目结构: 源代码: # -*- coding: utf-8 -*- """ @date:  2022/01/09 17:40 @author: Anker @python:v3.10 """   import tkinter as tk import tkinter.messagebox import pymysql   # 定义要执行的创

  • 使用Python实现简单的学生成绩管理系统

    目录 基本功能: 实现效果: 制作技巧 1.定义变量 2.读取学生成绩信息 3.循环等待操作指令并执行 4.编写操作指令执行函数 (1)显示学生成绩信息函数 (2)新建学生成绩信息函数 (3)查询学生成绩信息函数 (4)删除学生成绩信息函数 (5)修改学生成绩信息函数 5.保存学生成绩信息函数 完整源代码 总结 基本功能: 能够实现学生成绩相关信息的输入.输出.查找.删除.修改等功能:(使用数据库对数据进行存取) 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立

  • 利用Python通过商品条形码查询商品信息的实现示例

    目录 一 商品条形码 二 查询商品条形码的目的 三 Python实现 3.1 爬取网站介绍 3.2 python代码实现 提前说明,由于博文重在讲解,代码一体性有一定程度的破坏.如想要省事需要完整代码请至一下链接下载:完整代码下载 一 商品条形码 平日大家会购买许许多多的商品,无论是饮料.食品.药品.日用品等在商品的包装上都会有条形码. 商品条形码包括零售商品.非零售商品.物流单元.位置的代码和条码标识.我国采用国际通用的商品代码及条码标识体系,推广应用商品条形码,建立我国的商品标识系统. 零售

随机推荐