前些日子,同事的孩子参加高考,知道分数后让我帮忙参考报学校,作为一个已过不惑之年的油腻大叔,远离学校已经16年了,各个高校在我省得录取批次、人数、分数(位次)一无所知,幸亏有无所不知的互联网,但是全国几千家高校,一个一个查起来太难了,就想如果有个excel表格记录全国高校在我省得录取情况,我就可以根据分数(位次)从容的选出能够报考的学校。郁闷的是这个数据没有。我从2021年的3月开始基础python,这几天刚好自学到爬虫这一部分,我就想能不能从网络上爬取这些数据。查找网络,有https://gkcx.eol.cn/(中国教育在线),在学校——历年分数页面有我所需要的数据,具体如下:

黑色圈住的数据就是我需要的。

一、看到了上面的数据,但是还有一个前提条件,找到全国所有的学校,这个也好查找,图片如下:

看一下,全国所有的高校有143页,接下来我要做的就是看这些数据的真实来源,只有通过浏览器中的开发真工具,最好用谷歌浏览器,按F12,通过仔细观察,我发现 这些数据的真实来源于网页中的json ,真实网址应该是https://api.eol.cn/gkcx/api/?access_token=&admissions=&central=&department=&dual_class=&f211=&f985=&is_doublehigh=&is_dual_class=&keyword=&nature=&page=2&province_id=&ranktype=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&top_school_id=[766,707]&type=&uri=apidata/api/gk/school/lists,看一下这个网址,很容易发现,page=?是第几页列表所显示的所有学校,因为我自学还没有学到json数据爬取,我大概用了零零碎碎好几个小时来查找大神们的文章,后来发现可以通过开发工具可以很清楚的得到下面信息

你发现了什么,20个学校的地址,接着打开小三角,惊喜在这里:

name=学校名字,school_id=学校的数字代码,这个我们先保存下来,估计以后有用。

知道这么多,我们是不是可以尝试先把全国所有的高校信息先爬下来保存,然后遍历全国高校,爬取每个高校在某省得录取数据了。我们离成功近了一步,查了好多大神的代码,选了一个我勉强能够看得懂得,稍微做一下改动,具体如下:

import json
import requests
import os
import time
import random

先导入库,有用没用的我先导入,爬虫学习的时间段,搞懂搞不懂得先拿来:

heads={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}#请求头,这个还是可以懂的

url='https://api.eol.cn/gkcx/api/?access_token=&admissions=&central=&department=&dual_class=&f211=&f985=&is_doublehigh=&is_dual_class=&keyword=&nature=&page=%s&province_id=&ranktype=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&top_school_id=[766,707]&type=&uri=apidata/api/gk/school/lists’ #高校列表网址(红字的部分,这个要设置变量,以便我们爬取所有高校)

list=[]#搞一个空列表,本来想存入爬取高校的名字或者id

for i in range(1,144): #这个不用说了吧,用 i 来取代页码,从1到143
    print(url%(i))#可以不用的,我是想测试地址对不对
    response=requests.get(url%(i),headers=heads)#这个也不用说了,得到一个数据
    print(proxies)#测试,可以去掉
    print(response.text)#测试,可以去掉
    json_data=json.loads(response.text)#获得json数据,不懂得可以百度,我也是复制大神的
    #try: 这个用法百度一下,防止出错程序不往下运行
    my_json=json_data['data']['item']#好像是获得josn 数据的根目录
    for my in my_json: #做个循环,提取学校id 和学校名字
        li={my['school_id']:my['name']} #每个学校的id 和学校组成一个字典的键值对
        list.append(li) #将做成的字典加入list 列表

print(li)#打印键值对

print(list)#打印列表
    #except TypeError:
        #print('pass')
        
    time.sleep(5)# 间隔5秒钟

二、找出各学校的录取情况

打开网址用开发工具查找,跟查学校的差不多,看看发现了什么

真是网址:https://static-data.eol.cn/www/2.0/schoolprovinceindex/2020/46/42/1/1.json

我们需要提取数据为:local_batch_name,min,min_seciton,proscore, year,还要加上 学校名字,

多对比几次,很容易发现,2020是年,46是学校id(终于用上了),42是省分代码,1是理科(可以推断一下 2是理科),后面的1.json是一样的,稳妥起见,我就先下载2020年全国高校在我省招生理科的全部数据:

urlkzx='https://static-data.eol.cn/www/2.0/schoolprovinceindex/2020/%s/41/2/1.json'#构造真是网址,

res=requests.get(urlkzx%(my['school_id']),headers=heads)#得到数据,school_id来自于上一次爬取学校名称的循环
            kzx_json_data=json.loads(res.text)#数据json化
            kzx_json=kzx_json_data['data']['item']#找到根目录
            for kzx in kzx_json:#在根目录下一次提取具体数据
               
                kzxlist=[my['name'],kzx['year'],kzx['local_batch_name'],kzx['zslx_name'],kzx['min'],kzx['min_section'],kzx['proscore']] #将每个学校的每次提取数据装入列表,仔细观察my['name']来自于上一次爬取学校名称的循环,

result = open('result.xls', 'a+', encoding='gbk') # 定义指定输出Excel文件的名称,读入方式,编码方式,参数'w'表示往指定表格读入数据,会先将表格中原本的内容清空 ,若把参数’w'修改为‘a+',即可实现在原本内容的基础上,增加新写入的内容
                for ex in range(0, len(kzxlist)): 这个循环是上一个for循环的子循环
                    result.write(str(kzxlist[ex]))
                    result.write('\t')  # '\t'表示每写入一个元素后,会移动到同行的下一个单元格
                result.write("\n")  # 换行操作

result.close() 关闭文件

大体就这样了,好多东西没理解的情况写的,肯定有好多错误的地方,但是已经试验过,可以用。

python爬取全国高校在某省的录取分数线相关推荐

  1. 用python爬取考研信息网_【高考、考研党的福利】使用Python爬取全国高校及GIS/RS专业信息【附代码和Excel】...

    题外话:前一段时间翻译了一部关于GIS的纪录片,然后发了一篇文章,没想到有这么多人感兴趣,为了让广大GISER知道有这部神片,遂想投稿至GIS相关的专栏,不曾想居然还没人开设,真是"绕树三匝 ...

  2. Python 爬取高考各学校各专业录取分数线

    下学期有个 个人项目,高考志愿填报系统, 需要高考不同学校不同专业的录取分数线 通过简单的网页分析,得到请求的接口,然后模拟这个过程即可 import csv import json import r ...

  3. python查询高校信息_Python 3爬取全国高校基本信息-Go语言中文社区

    最近接了一个单子,是爬取全国高校的基本信息,高校名字,高校层次,高校地区,招生办电话,招生办官网~ 镇楼图如下: 开发环境:python3.6(最新3.7也可以的) +pycharm 第三放库:req ...

  4. python爬取中国大学_Python 3爬取全国高校基本信息

    最近接了一个单子,是爬取全国高校的基本信息,高校名字,高校层次,高校地区,招生办电话,招生办官网~ 镇楼图如下: 信息源网址是:https://gkcx.eol.cn/ 开发环境:python3.6( ...

  5. 利用Python爬取全国250m精度的人口数据

    此次以GeoQ(智图)为基础,利用Python爬取全国250m精度的人口数据(GeoQ)这个网站开放过250m精度的人口分布数据,而且人口分布有年龄分段等属性.先得注册登录到达创建地图的界面. 看人口 ...

  6. 利用Python爬取全国250m精度的人口数据(GeoQ)、房价数据和公交站(线路)等数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 中原百科 GIS大师兄 PS:如有需要Python学习资料的小伙伴可 ...

  7. 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)

    用Python爬取最新疫情数据 这次重大疫情,每时每刻数据都有可能变化,这篇博文将为大家讲解如何爬取实时疫情数据,并且分析数据,作出数据可视化的效果. 报告梗概: 对中国疫情分析 1.1 展示各省疫情 ...

  8. Python爬取全国大学排名 用pyecharts进行大屏可视化

    爬取全国大学排名 用pyecharts进行可视化 院校网址:http://college.gaokao.com/schlist/p F12 先找到对应的全部list 需要先安装requests,lxm ...

  9. python爬取全国五级行政区

    以前爬过国家统计局的四级行政区(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/),但是对于五级数据效果不是很好. 偶然间发现这个网站:ht ...

最新文章

  1. 【119】开始学习CMD
  2. html select 多选取值,下拉框多选实现 jquery-multiselect 并获取选中的值
  3. 厉害了,我的Python,竟然可以这么玩儿......(内含福利)
  4. jackson 驼峰注解_jackson - jackson annotations注解详解
  5. Oracle数据库sql调优
  6. webserver介绍与实现(利用各模块的封装实现)
  7. 从IT的角度思考BIM(二):模式与框架
  8. 拓端tecdat|matlab如何从信号中去除60 Hz Hum电源线噪声
  9. 【机器学习】线性回归(最小二乘法实现)
  10. 手机如何远程连接服务器
  11. 简述使用configurations.all统一androidx的版本
  12. 程序员30+后的困惑焦虑,出路在哪里?
  13. 免费SSL证书和付费SSL证书的区别在哪儿?
  14. 组织行为学对项目管理的意义(1) .
  15. [转]老师几乎气绝身亡,搞笑....
  16. 如何把自己的经历写成小说_教你如何把一本小说写成太监
  17. 英语练习day2 一般,否定疑问句,现表将来
  18. 前端背景图放置_如何在css中添加背景图?
  19. [ctfshow]web入门——文件上传(web156-web163)
  20. SE:5.面向对象(上)

热门文章

  1. C语言程序顺序结构1交换变量,C语言程序设计 顺序结构程序设计 习题.doc
  2. string::find和string::npos
  3. 市值蒸发300亿,娱乐行业如何渡劫?
  4. 爬虫之代理池学习(二)
  5. git删除远程分支问题及git批量删除已合并的远程分支
  6. Tensorflow2.0学习(五) — Keras基础应用(IMDb电影集情感分析)
  7. LeetCode #1087. Brace Expansion
  8. 2006年十大流行语录,那是相当的经典
  9. css 布局之 display:grid
  10. 关于.net mvc用sqlhelper实现用户登录操作executereader函数的使用报错