当前位置: 首页 > news >正文

高考分数查询结果自动推送至微信

又是一年高考时,祝各位学子金榜题名,天遂人愿!

        在您阅读以下内容时,请注意:各省查分API接口可能不相同,本人仅就技术层面谈谈, 纯属无聊,因为实用意义不大,毕竟一年一次,查询接口可能每年都变!!!

        在每年高考成绩公布前夜,人们通常会守候在电脑前查询成绩。但实际上,若了解了查询接口,就能利用爬虫自动获取成绩,并通过微信推送接口(Server酱),将信息直接发送至微信。

要定时查询一个学生的高考分数并将结果推送到微信上,可以按照以下步骤进行:

步骤一:导入所需的库

首先,我们导入需要使用的 Python 库,包括 requests、schedule 和 time。

 import requestsimport scheduleimport time

步骤二:定义 ping_website 函数

编写一个函数 ping_website(url) 来检查网站状态码是否为 200。如果状态码不是 200,则等待10秒后重新尝试。

 def ping_website(url):response = requests.head(url)return response.status_code

步骤三:定义 crawl_data_and_send_to_wechat 函数

创建一个函数 crawl_data_and_send_to_wechat(),在其中执行数据爬取并调用 Server酱接口将数据推送到微信。 

def crawl_data_and_send_to_wechat():website_url = "查询分数的API接口"while ping_website(website_url) != 200:print("查询接口还没有开放. 等待10秒钟后再试...")time.sleep(10)# 数据爬取逻辑print("爬取分数...")# 模拟爬取的数据crawled_data = "结果示例"# 使用Server酱推送消息至微信server_chan_url = "https://sc.ftqq.com/YOUR_SERVER_CHAN_KEY.send"requests.get(server_chan_url, params={"text": "Crawled Data", "desp": crawled_data})print("数据已通过Server酱发送到微信上!!!")

步骤四:定义 job 函数

创建一个 job() 函数,在其中调用 crawl_data_and_send_to_wechat() 函数。

 def job():crawl_data_and_send_to_wechat()

步骤五:设置定时任务

使用 schedule 库来设置每分钟执行一次的任务,并在主循环中运行定时任务。 

# 设置每分钟执行一次任务schedule.every().minute.do(job)​while True:schedule.run_pending()time.sleep(1)

以下是某省2023年高考成绩查询的接口演示

67c778cb27b04cc0b4088cdf2e1dc112.png

某省2023年高考查分界面

0be320b3746a43689eda95a617af25d0.png最后结果界面

查询响应是一个table, 以下敏感信息已用x替代。

<div class="gkcj-tit">2023年xxxxx省普通高等学校招生考试成绩查询结果</div>
<div class="base-info b1"><table class="base-t"><tr><td class="base-td">姓名:</td><td style="width: 168px;">xxxxxx</td><td class="base-td">身份证号:</td><td>xxxxxxxxxxxxxxxxxxxxxxxx</td></tr><tr><td class="base-td">高考准考证号:</td><td>xxxxxxxxxx</td><td class="base-td">高考报名号:</td><td>xxxxxxxxxx</td></tr></table>
</div>
<div class="score-info"><table class="score-t"><tr><td>科目名称</td><td>科目成绩</td></tr><tr><td>语文</td><td>xxx</td></tr><tr><td>数学</td><td>xxx</td></tr><tr><td>英语</td><td>xxx</td></tr><tr><td>历史</td><td>xxx</td></tr><tr><td>地理</td><td>xxx</td></tr><tr><td>生物学</td><td>xxx</td></tr><tr><td>总分</td><td class="score-tcolor">xxx</td></tr></table>
</div>
<div class="fh"><a onclick="back();" href="javascript:void(0);" class="gkcj-btn">返回继续查询</a>
</div>

以下程序仅给出了数据查询的程序,读者可以根据前面的步骤,将数据查询作为一个job, 将能查询到的结果推送到微信上。

在以下程序中主要注意以下几个问题:

1、创建同一个会话

2、验证码识别

这里对于验证码识别没有做异常处理,有时验证码识别可能错误,需重新访问网页获取。

import ddddocr
import requests
from bs4 import BeautifulSoup# 创建一个会话对象
# 要在一个会话中获取网页的源码提取__RequestVerificationToken的值,
# 同时通过接口http://查询成绩服务器IP/Validate/GetValidateCode?获取验证码session = requests.Session()# 请求网页获取源码
url = "http://查询成绩服务器IP/gk/gkcj2023?token=98c1234e8d5678bb"
response = session.get(url)
html_content = response.text# 使用BeautifulSoup解析网页源代码
soup = BeautifulSoup(html_content, 'html.parser')
# 从网页源代码中提取到__RequestVerificationToken的值
input_tag = soup.find('input', {'name': '__RequestVerificationToken'})
verification_token = input_tag['value']
print(verification_token)# 从网页源代码中提取验证码图片URL
validate_code_url = "http://查询成绩服务器IP/Validate/GetValidateCode?"for img in soup.find_all('img'):if "ValidateCode" in img['src']:validate_code_url += img['src']break# 获取验证码图片
response = session.get(validate_code_url, stream=True)
if response.status_code == 200:with open('captcha_image.png', 'wb') as out_file:for chunk in response.iter_content(chunk_size=128):out_file.write(chunk)# 打印验证码图片保存成功消息
print("验证码图片已保存为 captcha_image.png 文件")# 识别验证码
def imgRecognition(img):try:ocr = ddddocr.DdddOcr()with open(img, 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)return resexcept:return NonerandCode = imgRecognition('captcha_image.png')headers = {"Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "no-cache","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","DNT": "1","Origin": "http://查询成绩服务器IP","Pragma": "no-cache","Proxy-Connection": "keep-alive","Referer": "http://查询成绩服务器IP/gk/gkcj2023?token=98c1234e8d5678bb","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","X-Requested-With": "XMLHttpRequest"
}
cookies = {"__RequestVerificationToken_Lw__": "lcVcsxDb0RiSVf1wSZeQxzeD9WZ7+y4lBW7+5DkJmLDpT5hiTaxPXlpokbYfDTcEL3ujpDdB9qEezLBdnNZy/C8dYe9o9pJLTUqWeOnAmVWio0bRwhEkNK/jKbQLSE3T2t4rfg==","ValidateCode": randCode
}
url = "http://查询成绩服务器IP/gk/gkcj2023"  # 成绩查询接口
data = {"zkzh": "xxxxxxxxx",  # 准考证号"ksbh": "",  # 报名号"zjhm": "xxxxxxxxx",  # 身份证"yzm": randCode,  # 验证码"__RequestVerificationToken": verification_token  # 从网页中获取的值
}
response = session.post(url, headers=headers, cookies=cookies, data=data, verify=False)# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')# 提取表格数据
table_data = []
for table in soup.find_all('table'):for row in table.find_all('tr'):cols = row.find_all(['td'])cols = [ele.text.strip() for ele in cols]table_data.append(cols)# 保存提取的表格数据到.txt文件
with open("高考成绩.txt", "w") as file:for row in table_data:file.write('\t'.join(row) + '\n')print("表格数据已保存为 高考成绩.txt 文件")

最后查询结果:

b83930f2d7e2497abdc7b0889ed08d9d.png各高考查分接口,为保障查询速度,一般仅采取了简单的反爬措施,所以获取结果不是很困难!

相关文章:

高考分数查询结果自动推送至微信

又是一年高考时&#xff0c;祝各位学子金榜题名&#xff0c;天遂人愿! 在您阅读以下内容时&#xff0c;请注意&#xff1a;各省查分API接口可能不相同&#xff0c;本人仅就技术层面谈谈&#xff0c; 纯属无聊&#xff0c;因为实用意义不大&#xff0c;毕竟一年一次&#xff0c;…...

flask_sqlalchemy时间缓存导致datetime.now()时间不变问题

问题是这样的&#xff0c;项目在本地没什么问题&#xff0c;但是部署到服务器过一阵子发现&#xff0c;这个时间会在某一刻定死不变。 重启uwsgi后&#xff0c;发现第一条数据更新到了目前最新时间&#xff0c;过了一会儿再次发送也变了时间&#xff0c;但是再过几分钟再发就会…...

使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理

教程简述 在本教程中&#xff0c;您将学习在阿里云交互式建模平台PAI-DSW x Free Prompt Editing&#xff08;CVPR2024中选论文算法&#xff09;图像编辑算法&#xff0c;开发个人AIGC绘图小助理&#xff0c;实现文本驱动的图像编辑功能单卡即可完成AIGC图片风格变化、背景变化…...

Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

目录 写在前面Nginx03案例1 模拟视频下载网站自动索引autoindex基础认证auth_basic模块状态stub_status模块模块小结 案例2 动态网站&#xff08;部署php代码&#xff09;概述常见的动态网站的架构LNMP架构流程数据库Mariadb安装安全配置基本操作 PHP安装php修改配置文件 Nginx…...

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十九)- 微服务(9)

目录 12. ElastisSearch 12.1 安装es 12.2 部署kibana 12.2.1 部署 12.2. 2 DevTools 12.3 索引库操作 12.3.1 mapping映射 12.3.2 创建索引库 12.3.3 查询索引库 12.3.4 删除索引库 12.3.5 修改索引库 12.4 文档操作 12.4.1 新增文档 12.4.2 查询文档 12.4.3 删…...

Matplotlib常见图汇总

Matplotlib是python的一个画图库&#xff0c;便于数据可视化。 安装命令 pip install matplotlib 常用命令&#xff1a; 绘制直线&#xff0c;连接两个点 import matplotlib.pyplot as plt plt.plot([0,5],[2,4]) plt.show() 运行结果如下&#xff1a; 多条线&#xff1a;…...

MTK联发科MT6897(天玑8300)5G智能移动处理器规格参数

天玑 8300 采用台积电第二代 4nm 制程&#xff0c;基于 Armv9 CPU 架构&#xff0c;八核 CPU 包含 4 个 Cortex-A715 性能核心和 4 个 Cortex-A510 能效核心&#xff0c;CPU 峰值性能较上一代提升 20%&#xff0c;功耗节省 30%。 此外&#xff0c;天玑 8300 搭载 6 核 GPU Mal…...

【AIoT-Robot】3d hand pose

手语是聋哑人士的主要沟通工具,它是利用手部和身体的动作来传达意义。虽然手语帮助它的使用者之间互相沟通,但聋哑人士与一般人的沟通却十分困难,这个沟通障碍是源于大部分人不懂得手语。 1. 手势&&手语 手势:手的姿势 ,通常称作手势。它指的是人在运用手臂时,所…...

使用 tc (Traffic Control)控制网络延时

设置网络延时 1500ms 800ms tc qdisc add dev eth0 root netem delay 1500ms 800msping 测试 ping www.baidu.com取消设置网络延时 sudo tc qdisc del dev eth0 root...

android原生TabLayout之自定义指示器效果

“com.google.android.material.tabs.TabLayout” 这个玩意说起来大家都不陌生。结合viewPager或者单独使用。场景非常多。当然市面上的三方也数不胜数。但是毕竟是亲儿子。用起来终归是顺手一些。下面说一下TabLayout的具体用法细节&#xff1a; 首先&#xff0c;xml布局引入…...

最新 HUAWEI DevEco Studio 使用技巧

最新 HUAWEI DevEco Studio 使用技巧 HUAWEI DevEco Studio 作为我们 harmonyos 应用的开发工具&#xff0c;有必要好好打磨一下。 Chinese(Simplified) 中文汉化插件 GitToolBox 编辑器中显示git历史 保存时自动格式化 写了一堆代码&#xff0c;当保存时&#xff0c;自动帮…...

开源大模型与闭源大模型浅析

引言 技术发展背景 早期语言模型 预训练与微调的范式 开源与闭源模型的兴起 当前的技术前沿 未来发展趋势 开源大模型的特点与优势 技术共享与创新加速 成本效益 社区驱动的发展 透明度和可审计性 促进教育与人才培养 灵活性和自定义 闭源大模型的特点与优势 商…...

docker 命令 ps,inspect,top,logs详解

docker常用命令教程-4 docker ps docker ps 命令用于列出当前正在运行的容器。默认情况下&#xff0c;它只显示正在运行的容器&#xff0c;但你可以使用 -a 或 --all 选项来显示所有容器&#xff08;包括已停止的容器&#xff09;。 常用的选项和示例&#xff1a; -a 或 --…...

Windows 找不到文件‘shell:sendto‘。请确定文件名是否正确后,再试一次

执行“shell:sendto”命令的时候&#xff0c;报错&#xff1a;Windows 找不到文件’shell:sendto’。请确定文件名是否正确后&#xff0c;再试一次 解决办法&#xff1a; 在桌面新建一个记事本文件命名为fix.reg&#xff0c;注意后缀是reg&#xff0c;文件中填写以下内容&…...

【算法】模拟算法——外观数组(medium)

题解&#xff1a;模拟算法——外观数组(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接&#xff1a;LINK 2.题解 首先应该理解题意&#xff1a; 就是开始给你一个字符串&#xff0c;然后你对其进行描述。 描述规则是&#xff1a;连续的数字为一组&#xff0c;…...

2024年会计、金融与工商管理国际会议(ICAFBA 2024)

2024年会计、金融与工商管理国际会议 2024 International Conference on Accounting, Finance, and Business Administration 【1】会议简介 2024年会计、金融与工商管理国际会议是一场集合了全球会计、金融与工商管理领域专家学者的学术盛会。此次会议旨在深入探讨会计、金融与…...

关于 spring boot 的 目录详解 和 配置文件 以及 日志

目录 配置文件 spring boot 的配置文件有两种格式&#xff0c;分别是 properties 和 yml&#xff08;yaml&#xff09;。这两种格式的配置文件是可以同时存在的&#xff0c;此时会以 properties 的文件为主&#xff0c;但一般都是使用同一种格式的。 格式 properties 语法格…...

如何删除电脑端口映射?

在使用电脑进行网络连接时&#xff0c;有时需要进行端口映射以实现不同设备之间的信息远程通信。当这些端口映射不再需要时&#xff0c;我们需要及时删除它们以确保网络的安全和稳定。本文将介绍如何删除电脑端口映射的方法。 操作系统自带的工具 大多数操作系统都提供了自带…...

xiaolingcoding 图解网络笔记——基础篇

文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示&#xff0c;期间发生了什么&#xff1f;1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮&#xff08;添加、删除头部信息&#xff09;参考图HTTP 请求…...

Docker 容器 mysql 配置主从

1、前提条件 集群的条件下 服务器 172.16.11.195 13316:3306 服务器 172.16.11.196 13317:3306 配置好主数据库和从数据 2、配置主从数据库 2.1使用portainer 来管理容器 建立数据库密码 新增配置文件 # mysql-master.cnf [mysqld] server_id110 log-binmysql-binrela…...

PdgCntEditor三步搞定PDF书签目录自动生成

1. 为什么你需要PDF书签目录&#xff1f; 每次打开几百页的PDF文档&#xff0c;像无头苍蝇一样滑动滚动条找内容&#xff1f;这种体验我太懂了。上周处理一份300多页的技术手册&#xff0c;光是翻目录就花了半小时&#xff0c;直到我发现PdgCntEditor这个神器。它能把杂乱无章…...

ApiPost实战指南:从接口创建到自动化测试的全流程解析

1. 从零开始创建你的第一个API接口 作为一个常年和API打交道的开发者&#xff0c;我深知新手第一次接触接口工具时的迷茫。ApiPost作为一款国产的API开发工具&#xff0c;用起来确实比Postman更顺手&#xff0c;特别是对中文用户特别友好。下面我就带你一步步创建第一个接口&am…...

RAG深度解析一:从参数化知识到检索增强的范式重构

【内容定位】深度技术原理【文章日期】2026-03-27【场景引入】进入2026年3月&#xff0c;一场围绕大语言模型“可信性”的讨论在技术社区再度升温。开发者们早已不再争论模型参数量&#xff0c;而是转向一个更实际的问题&#xff1a;如何让动辄千亿参数的大模型&#xff0c;在回…...

3分钟快速上手:免费高效的Elasticsearch可视化工具Elasticvue终极指南

3分钟快速上手&#xff1a;免费高效的Elasticsearch可视化工具Elasticvue终极指南 【免费下载链接】elasticvue Elasticsearch gui for the browser 项目地址: https://gitcode.com/gh_mirrors/el/elasticvue 你是否曾经为复杂的Elasticsearch集群管理而烦恼&#xff1f…...

嵌入式开发核心技术:内存管理与中断处理详解

嵌入式实习岗位面试技术要点解析1. 内存管理基础1.1 C/C内存分配机制在嵌入式系统中&#xff0c;内存分配主要涉及以下几个区域&#xff1a;栈(Stack)&#xff1a;用于存储局部变量、函数参数和返回地址&#xff0c;由编译器自动分配和释放堆(Heap)&#xff1a;通过malloc/free…...

用LVGL玩转嵌入式UI:5个实战控件代码详解(按钮/滑块/图片/标签/开关)

LVGL嵌入式UI开发实战&#xff1a;五大核心控件深度解析与代码优化 在资源受限的嵌入式设备上实现流畅美观的用户界面&#xff0c;一直是开发者面临的挑战。LVGL&#xff08;Light and Versatile Graphics Library&#xff09;作为一款轻量级开源图形库&#xff0c;凭借其丰富的…...

Arduino激光360°扫描库:VL53L0X+28BYJ-48低成本建图方案

1. 项目概述LaserToMap360 是一个面向嵌入式空间感知应用的轻量级 Arduino 库&#xff0c;专为构建低成本、可复现的 360 激光测距扫描系统而设计。其核心目标并非替代专业 SLAM 系统&#xff0c;而是提供一种工程上可快速验证、硬件上可即插即用、数据上可直接对接上位机可视化…...

告别编译踩坑:详解GMP交叉编译中DESTDIR和.la文件的那些‘坑’与正确用法

告别编译踩坑&#xff1a;详解GMP交叉编译中DESTDIR和.la文件的那些‘坑’与正确用法 交叉编译是嵌入式开发和跨平台构建中的常见需求&#xff0c;但其中隐藏的陷阱往往让开发者头疼不已。特别是像GMP这样的基础数学库&#xff0c;一旦编译或部署环节出现问题&#xff0c;可能导…...

Matlab实战:5步搞定微电网源储荷协调调度(附完整CPLEX调用代码)

Matlab实战&#xff1a;微电网源储荷协调调度的5个工程化技巧 微电网调度是新能源时代的核心技术难题之一。面对风光发电的波动性和负荷需求的多变性&#xff0c;如何实现源、储、荷三者的动态平衡&#xff0c;成为电力工程师们每天都要应对的挑战。不同于学术论文中复杂的理论…...

5V与3.3V MCU串口电平转换电路设计

不同工作电压MCU间的串口电平转换电路设计1. 项目概述1.1 问题背景在现代嵌入式系统设计中&#xff0c;经常遇到不同工作电压的微控制器(MCU)之间需要进行串口通信的场景。例如&#xff1a;MCU1工作电压&#xff1a;5VMCU2工作电压&#xff1a;3.3V若直接将两个MCU的TX、RX引脚…...