老菜鸟学PYthon - 高考志愿填报数据的实时采集

一直想学习Python,又一直懒,直到今年高考志愿填报开始,在跟进学习的过程中发现了很多高分却报漏未被录取或没有报上的情况。(自家小子今年下半年开始高三生涯)

学习目的:2022年7月开始的高考志愿填报时,抓取院校信息、专业信息、每小时更新的志愿填报信息,综合分析意向学校的意向专业的录取分数变化情况。

背景说明:我所在内蒙古是全国唯一一个实时网报、实时排名的报考模式。

数据来源:以下学习过程中所使用的数据均为2021年内蒙古志愿填报提前批数据。


开始下载安装PYthon3.5.2、mysql5.6,而python的学习也从网上搜到的两段代码开始......

import jsonprices = {'ACME': 45.23,'AAPL': 612.78,'IBM': 205.55,'HPQ': 37.20,'FB': 10.75
}with open('price.json', 'w') as f:json.dump(prices, f)f.close()

上面这段,是把数据写入json文件。

下面这段,是从json文件读取数据。

import jsonwith open('price.json', 'r') as f:a = json.load(f)  # 此时a是一个字典对象print(a)print(a['ACME'])f.close()

有了上面两段代码的例子打底,开干。


数据来源 → 内蒙古教育招生考试中心 ,地址:

https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/tj/tjyx.html?path=Bicon-default.png?t=L892https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/tj/tjyx.html?path=B

院校名称超链接为学校在内蒙古所招生专业及人数,已报人数超链接为已报该学校的考生分数及考生所报志愿。

F12 → 网络 → ctrl+r 后,发现数据来源是

https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/data/tjyx.jsonicon-default.png?t=L892https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/data/tjyx.json下载文件到本地,开始折腾。


import json
import re
with open('tjyx.json','r',encoding='UTF-8') as f:aa = json.load(f)i=0while i< len(aa):bb=aa[i]print (bb['yxmc'])i +=1f.close()

循环读取json文件内容实现。↑

import pymysql
import time#连接数据库参数
conn = pymysql.connect(host='localhost',port=3306,user='root',password='168168',database='2021.08.10',charset='utf8'
)# 获取一个光标
cursor = conn.cursor()# 获取当前时间 2020011011
atime=time.strftime("A%Y%m%d%H", time.localtime())# 判断 atime 表是否存在
sql1 = 'DROP TABLE IF EXISTS {}'
sql2 = sql1.format(atime)
cursor.execute(sql2)# 创建 atime 数据表# 涉及写操作要注意提交
conn.commit()# 关闭连接
cursor.close()
conn.close() 

数据库连接实现,实时数据表名实现。同时根据json创建数据表并调整数据结构。↑

# 创建 atime 数据表
sql3 = 'CREATE TABLE {} (path varchar(10),yxmc varchar(20),zf int(1),syjh int(1),lqzdf int(1),pcmc varchar(20),tdzdf1 int(3),ykb int(1),jhs int(3),yxdh varchar(10),klmc varchar(10),qdrs int(1),zt int(1),kldm varchar(10),ycdrs int(1),stdbl varchar(10),tj_zf int(1),xznx int(1),ybrs int(3),tdbl int(1),tdzdf int(3))'
sql = sql3.format(atime)
cursor.execute(sql)
print ("数据表 "+atime+" 创建完毕")

创建数据表实现。↑


# 定义json数据路径
adata=json.loads(requests.get("https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/data/tjyx.json").text)

修改了json的获取方式,直接自url获取,规避了下载到本地再读取的xx行为。↑

# 自json提取院校数据
i=0
while i< len(adata):bdata = adata[i]sql1 = "INSERT INTO {} (path,yxmc,zf,syjh,lqzdf,pcmc,tdzdf1,ykb,jhs,yxdh,klmc,qdrs,zt,kldm,ycdrs,stdbl,tj_zf,xznx,ybrs,tdbl,tdzdf) VALUES ('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}')"sql = sql1.format(atime,bdata['path'],bdata['yxmc'],bdata['zf'],bdata['syjh'],bdata['lqzdf'],bdata['pcmc'],bdata['tdzdf1'],bdata['ykb'],bdata['jhs'],bdata['yxdh'],bdata['klmc'],bdata['qdrs'],bdata['zt'],bdata['kldm'],bdata['ycdrs'],bdata['stdbl'],bdata['tj_zf'],bdata['xznx'],bdata['ybrs'],bdata['tdbl'],bdata['tdzdf'])cursor.execute(sql)i +=1
print ("共提取 " + str(i) + " 条院校数据,并写入 " + atime +" 数据表。")

院校数据提取并写入mysql实现。↑

而后照方抓药,实现了专业数据的提取及写入数据库。不同的是专业数据来源于

https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/data/tjzy.jsonicon-default.png?t=L892https://www.nm.zsks.cn/21gkwb/gktj_21_11_61_19/data/tjzy.json期间遇到的问题:院校数据的zszc变量部分学校为空,提取并写入数据库时遇到就会卡壳报错;专业数据的bxdd、xf、bz 三个变量也存在上述情况。这个问题困扰了我几天,在网友的指点下,成功解决。

Python 字典(Dictionary) get()方法icon-default.png?t=L892https://www.runoob.com/python/att-dictionary-get.html

修改代码后的运行结果如下:

 下一步按这个方法完善好院校数据、专业数据的抓取,并开始已报志愿数据的抓取。


经历了无人报考院校采集报错问题,就python这个莫名其妙的错误提示,哎

最后还是按数据比对,才发现无人填报院校报错

 

 因为无人填报,所以json文件不存在,遇到这个坑python直接就over了。

磕磕绊绊,数据采集的目标达成。


学习成果展示

01 - 所有抓取到的数据(包含院校、专业、志愿填报)

02 - 院校数据

 03 - 专业数据

 04 - 志愿填报数据 这里以294为例 共619人填报

有人知道院校代码294是哪所学校吗?

※※※至此,最初制定的数据采集目标已经实现。接下来会是两个方面:

1、采集到库里的数据的实时可视化;

2、采集功能的优化,毕竟现在只能算是勉强能用,离好用还很远。


问题来了,随机性在读取json文件时出现无响应,PYthon报错并中止运行。

 反复学习、测试,总算是解决了数据抓取超时的问题。解决此问题后的运行效果

 经多次测试,遇到json读取异常后重试读取都能顺利执行

具体解决方式如下

class Http():def get_html(self,url,path):try:return self.__request(url)except:            secends = random.randint(1, 3)print(path+'数据读取异常,'+ str(secends) + '秒后重试')time.sleep(secends)   # 暂停1~3秒,然后再尝试一次try:print('重试数据读取......')return self.__request(url)except:print(path+'数据读取再次异常,'+ str(secends) + '秒后跳过')time.sleep(secends)   # 暂停1~3秒,然后跳过return ''def __request(self, url):response = requests.get(url, timeout=(5, 15)) response.encoding ='utf-8'return response.text

通过以上方式,实现了python抓取数据无响应后重新抓取的功能。

后续思路:如重复抓取依然失败,可加入循环实现多次抓取,不过目前看无此必要。

至此,数据采集部分告一段落,下一步开始构思数据匹配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20957.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教你用Python浪漫表白

虽然2.14情人节已过&#xff0c;但接下来还有白色情人节&#xff0c;黑色情人节&#xff0c;玫瑰情人节…… 如果你有意中人, 赶紧抓住机会表白! Python浪漫表白! Python具有超强大的绘图功能&#xff0c;可以在你准备表白时祝你一臂之力. Python导包 import numpy as np impor…

本周大新闻|苹果首款MR没有主打卖点;Meta认为AI是AR OS的基础

​本周XR大新闻&#xff0c;AR方面&#xff0c;苹果首款MR或没有主打卖点&#xff0c;反而尽可能支持更多App和服务&#xff1b;扎克伯格表示基于AI的AR眼镜操作系统是下一代计算平台的基础&#xff1b;微软芯片工程VP Jean Boufarhat加入Meta芯片团队&#xff1b;Humane展示了…

《塞尔达传说》发售 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 2 月 21 日&#xff0c;在 1804 年的今天&#xff0c;英国人理查德特里维西克经过多年的探索、研究&#xff0c;终于制造了一台单一汽缸和一辆蒸汽机车&#xf…

Language Models Meet World Models: Embodied Experiences Enhance Language Models翻译

摘要 尽管大型语言模型&#xff08;LM&#xff09;在众多任务中表现出了出色的能力&#xff0c;但它们经常在物理环境中无法进行的简单推理和计划&#xff0c;例如理解目标的持续性或计划家庭活动。这种局限源于以下事实&#xff1a;LM仅在书面文本中训练&#xff0c;而缺乏基…

OpenAI CEO 称公司没有上市计划;特斯拉自动驾驶将开放给其他车企;百度智能云推出代码助手 Comate|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

Python代码解蓝桥杯第十三届省赛(C/C++大学B组)赛题

Python代码解蓝桥杯第十三届省赛(C/C大学B组)赛题。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https://lqpybook.re…

GDOUCTF2023 WriteUP by 肥猪拱菜队

前言 本篇WriteUP为B0、ccc、Boogipop、树木共同编写&#xff0c;感谢三位师傅带我打比赛拿了个第五Orz Misc 签到 关注微信公众号发送指令得到flag Matryoshka 解压附件得到一个zip和一个txt&#xff0c;看看txt的内容 不难发现&#xff0c;是将数字和一些运算符号给用英…

chatGPT教你学sql的事务

事务的隔离级别 事务的隔离级别是指多个并发事务之间相互隔离的程度&#xff0c;主要是为了解决并发事务带来的一致性问题&#xff0c;它的主要作用是控制数据库中事务的可见性和可重复读。 在 SQL 标准中&#xff0c;定义了四种事务隔离级别&#xff0c;分别为&#xff1a; …

最全的AI插件Astute Graphics 2020全系列

Astute Graphics 2020全系列AI插件 Mac版包含了Astute Graphics出品的全部AI插件&#xff0c;包含18个常用辅助功能&#xff0c;可以帮助用户提高平面和矢量设计的效率&#xff0c;不断提高你的设计工作流程。让图像处理工作更快速高效。完美兼容Adobe Illustrator2018- -2020&…

精选AI工具合集,效率神器!不止ChatGPT

2023绝对称得上是脑洞大开的一年&#xff01;人工智能的风口由OpenAI旗下的ChatGPT率先引爆&#xff0c;从前认为不会被AI取代的知识型工作&#xff0c;它也足以胜任。AI不会取代你自己&#xff0c;但用好AI你将会淘汰大部分人。下面给大家整理5个实用的AI合集工具供参考。 全…

多地重大项目密集开工 建筑行业人才暴涨

7月31日&#xff0c;武汉举行了第三季度重大项目集中开工活动&#xff0c;本次集中开工的亿元以上重大项目共161个&#xff0c;总投资达2158亿元。同日&#xff0c;安徽举行2021年第七批重大项目集中开工动员会&#xff0c;共有227个重大项目集中开工&#xff0c;总投资1064亿元…

【产业互联网周报】全国超30城市正建或筹建智算中心;比尔•盖茨:不太看好Web3和元宇宙;...

关注ITValue&#xff0c;看企业级最新鲜、最价值报道&#xff01; &#xff08;1月9日-15日&#xff09;最近一周&#xff0c;加拿大宣布启动国家量子战略&#xff1b;微软收购可组合式基础设施供应商Fungible&#xff1b;阿里云海外增设产品、生态等四大国际能力中心&#xff…

隐私计算头条周刊(2.6-2.12)

开放隐私计算 收录于合集 #企业动态42个#周刊合辑43个#政策聚焦36个#隐私计算43个#隐私计算技术36个 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技…

2022年中国广义数据智能市场规模为442亿元

数据智能是当前市场上的热点应用。但业界对于数据智能的发展状况&#xff0c;缺乏深入探讨与研究。为了系统梳理中国数据智能行业市场全景&#xff0c;厘清行业发展脉络&#xff0c;为从业者提供有价值的借鉴&#xff0c;海比研究院联合中国软件网、中国软件行业协会应用软件产…

招标 | 近期隐私计算项目招标中标33(中国邮储银行、中国移动、南湖实验室等)

开放隐私计算 1 招标 1、 基于隐私计算的智能化数据开发与运营平台&#xff08;天机平台&#xff09;项目 项目名称&#xff1a;基于隐私计算的智能化数据开发与运营平台&#xff08;天机平台&#xff09;项目 公告日期&#xff1a;2023-03-23 采购单位&#xff1a;上海数据集…

thinkphp6 + phpexcel 导入导出数据,设置特殊表格

第一步&#xff1a;安装excel&#xff0c;使用composer安装&#xff0c;我的是在window下&#xff0c;直接cmd切换到项目下面&#xff0c;输入 composer require phpoffice/phpexcel&#xff0c;然后就等待安装完成。如下图&#xff1a; 第二步&#xff1a;引入相关类 <?…

雅思口语考试的口音问题怎么解决?

很多学生都担心自己的口音不标准&#xff0c;也许在考试中难拿高分。确实口音不标准对于学生的雅思口语会有影响&#xff0c;那么就来看看雅思考试口音问题怎么解决吧。 一、雅思口语考试口音问题 1、分清楚元音和辅音中的易混音 听力中大家一定遇到过这样的情况&#xff0c;…

剑桥口语 — 48 个音标标准口型与细节发音

文章目录 一、不同的音标介绍二、DJ 音标三、常识&#xff08;一&#xff09;空腔器官&#xff08;二&#xff09;元音&#xff08;三&#xff09;元音舌位图 四、参考视频与教材四、元音&#xff08;1&#xff09;前元音&#xff1a;[i:] [ɪ] [e] [][i:][ɪ][e][] &#xff0…

怎么按面积比例创建缓冲多边形——看一下ChatGPT怎么回答

学习更多Python & GIS的相关知识&#xff0c;请移步公众号GeodataAnalysis。 之前写论文的时候看到过一个计算城市边界的方法&#xff0c;其大致流程是这样的&#xff0c;先是识别建成区单元&#xff1b;然后去除农村建成区单元&#xff1b;之后为每个单元创建缓冲区&…

Nature:为什么人工智能需要理解因果?

转自&#xff1a;集智俱乐部 作者&#xff1a;Neil Savage 导语&#xff1a;为什么药物只对某些人有效&#xff0c;而对另一些人无效&#xff1f;为什么 ChatGPT 会产生违背常识的答案&#xff1f;机器学习的发展似乎遇到了障碍&#xff0c;其中症结或许在于“相关性不等于因果…