python爬取高考各高校分数线查询_python 爬虫 爬取高考录取分数线 信息
网页
完整资料一个多g
高校信息爬取接口
import requests_html
import json
sess = requests_html.HTMLSession()
url = "https://api.eol.cn/gkcx/api/"
data = {
"access_token": "",
"admissions": "",
"central": "",
"department": "",
"dual_class": "",
"f211": "",
"f985": "",
"is_dual_class": "",
"keyword": "",
"page": 8, "province_id": "",
"request_type": 1,
"school_type": "",
"size": 20,
"sort": "view_total",
"type": "",
"uri": "apigkcx/api/school/hotlists"
}
res = sess.post(url, data)
js = res.json()
print(type(js)) #
with open('./school.json', mode='w+') as f:
f.write(js['data']['item'])
省份信息,在需要选择省份的下拉框页面中查看请求
def get_province():
url = "https://static-data.eol.cn/www/config/detial/1.json"
res = sess.get(url)
js = res.json()
print(js)
with open('./province.json', mode='w+') as f:
json.dump(js, f)
接口有最大数据传输量的限制,需要按照分页格式先请求所有,然后合并学校信息,并输出为xlsx文件
完整代码
import requests_html
import json
import glob
import pandas as pd
sess = requests_html.HTMLSession()
def get_school():
url = "https://api.eol.cn/gkcx/api/"
for pageNo in range(300):
data = {
"access_token": "",
"admissions": "",
"central": "",
"department": "",
"dual_class": "",
"f211": "",
"f985": "",
"is_dual_class": "",
"keyword": "",
"page": pageNo,
"province_id": "",
"request_type": 1,
"school_type": "",
"size": 20,
"sort": "view_total",
"type": "",
"uri": "apigkcx/api/school/hotlists"
}
res = sess.post(url, data)
js = res.json()
print(type(js['data']['item'])) #
with open(f'./school/school_{pageNo}.json', mode='w+') as f:
json.dump(js['data']['item'], f)
def get_province():
url = "https://static-data.eol.cn/www/config/detial/1.json"
res = sess.get(url)
js = res.json()
print(js)
with open('./province.json', mode='w+') as f:
json.dump(js, f)
def show_province():
with open('./province.json', ) as f:
data = json.load(f)
print(data)
def merge_school():
all_school = []
for path in glob.glob('./school/*'):
with open(path) as f:
data = json.load(f)
all_school += data
print(len(all_school)) # 2855
all_school = json.dumps(all_school)
with open('./json/school.json', mode='w+') as f:
json.dump(all_school, f)
df = pd.read_json(all_school)
df.to_excel('./school.xlsx')
if __name__ == '__main__':
# get_school()
# get_province()
merge_school()
查询每个学校每年在各个省份的录取成绩
import json
import requests
import os
from multiprocessing import Pool
import time
import random
years = range(2014, 2018 + 1) # 年份
pages = range(2) # 数目,3页基本够用了
types = [
{
'code': 1,
'name': '理科'
},
{
'code': 2,
'name': '文科'
}
] # 文理科
with open('./json/province.json') as f:
provinces = json.load(f)
with open('./json/school.json') as f:
schools = json.load(f)
headers = {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json;charset=UTF-8',
'Origin': 'https://gkcx.eol.cn',
'Referer': 'https://gkcx.eol.cn/school/332',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
}
def get_score(school):
path = f"./score/{school['name']}.json"
if os.path.exists(path):
print(school['name'], 'exists')
return
sess = requests.Session()
url = "https://api.eol.cn/gkcx/api/"
score = {}
for type in types:
score[type['name']] = {}
for province in provinces:
score[type['name']][province['name']] = {}
for year in years:
all_data = []
try:
for page in pages:
data = {
"access_token": "",
"local_province_id": province['code'], # 学生省份
"local_type_id": type['code'], # 文理科 理科1 文科2
"page": page, # 页号
"school_id": school['school_id'], # 学校id
"size": 20,
"uri": "apidata/api/gk/score/special",
"year": year # 年份
}
# time.sleep(random.random() * 0.1)
js = sess.post(url, data, headers=headers).json()
all_data += js['data']['item']
except Exception as e:
print(e)
score[type['name']][province['name']][str(year)] = all_data
with open(path, mode='w+') as f:
json.dump(score, f)
print(school['name'], 'finished')
def start():
for school in schools[:10]:
print(school['name'], 'start')
get_score(school)
def thread_start():
# 线程数目太多会被访问拒绝
p = Pool(4)
for school in schools:
print(school['name'], 'start')
p.apply_async(get_score, args=(school,))
p.close() # 关闭进程池,不再接受新的任务
p.join() # 阻塞主进程,知道进程池中的进程完成任务
def main():
# start()
thread_start()
if __name__ == '__main__':
main()
python爬取高考各高校分数线查询_python 爬虫 爬取高考录取分数线 信息相关推荐
- python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例
利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...
- python爬取历史天气查询_python爬虫爬取各个城市历史天气及数据可视化
import asyncio import aiohttp from lxml import etree import re from collections import namedtuple Ar ...
- python爬取js加载的数据_Python爬虫:爬取JS加载数据的网页
比如简书: Paste_Image.png 我们来写个程序,爬取简书网站随便一个作者的所有文章,再对其所有文章进行分词统计 程序运行统计的结果见文章: 我统计了彭小六简书360篇文章中使用的词语 需要 ...
- python爬取微博热搜写入数据库_python爬虫爬取微博热搜
[实例简介] [实例截图] [核心代码] import requests #数据抓取库 from lxml import etree #数据解析库 imp ...
- python爬取豆瓣电影top250的名字_Python爬虫-爬取豆瓣电影Top250
小菜鸟一枚,这是第五个爬虫吧,记录一下 #!usr/bin/env python3 # -*- coding:utf-8-*- import requests from bs4 import Beau ...
- python编写的软件可以申请专利吗_Python爬虫 | 爬取同一公司用不同名字申请专利的那些Assignees...
公司在申请专利时,因为各种原因会使用不同的名字作为申请人(Assignees),那当我们要研究这个公司的专利时,如果不知道这个公司用过什么名字,可能就会错过很多专利数据. 正好学长做过相关的研究,写了 ...
- 2021重庆市实验中学高考成绩查询,重庆实验中学2021年录取分数线
家长和同学们在选择报考学校的时候,一定要先了解学校的招生政策和招生要求,学校录分数线是多少,提前了解学校录取分数线对同学们来说是非常重要的,家长和学生们可以参考学校往年的录取分数线,预测自己能不能考生 ...
- 建文高考成绩查询2021,巴中市建文中学录取分数线是多少,2021年分数要求
巴中市建文中学的录取分数线预计2021年6月份公布.斗争的生活使你干练,苦闷的煎熬使你醇化:这是时代要造成青年为能担负历史使命的两件法宝.一个人做事要像一堵墙,外人永远也窥探不到墙里的秘密:两个人做事 ...
- 2021年峰峰春晖中学高考成绩查询,峰峰春晖中学2019年录取分数线
技校网专门为您推荐的类似问题答案 问题1: 河北丰润车轴山中学2011年录取分数线 按学校名次录取 问题2: 广州美术中学2011年中考录取分数线 提前批优先线为693分,比往年略高.公费线640分, ...
- 河南城建学院计算机分数,河南城建学院录取分数线2021是多少分(附历年录取分数线)...
河南城建学院录取分数线2020是多少分,各专业录取分数线是多少,是每个填报河南城建学院的考生最关注的问题,随着各省高考录取批次相继公布,考生也开始关心是否被录取,本站小编整理相关信息供参考,仅供参考. ...
最新文章
- 分段函数是不是一定初等函数_查漏补缺问题64:一个含多参数分段函数的连续性与可导性讨论...
- 如何启用 SAP Spartacus Guest checkout
- win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
- iphone最新款手机_苹果罕见“跌停”!遭遇6年来最惨淡一夜,2019年全球股市第一颗雷引爆...
- 如何在自己的程序里执行/终止一个外部程序?
- 【Shell】数某关键字在文件中出现次数
- moodle重定向_用最简单的pythonGUI库PysimpleGUI 设计一款中丹学院Moodle课件下载器。...
- linux正则表达式大全,正则表达式,正则表达式语法大全
- 即时通讯软件(即聊天软件)代表软件列表
- 《沉默的大多数》 - 王小波
- 【转帖】 嵌入式路线狂人计划--------个人认为。
- Kubernetes(k8s)的Pod资源清单spec.containers属性详细讲解
- 利用微搭低代码操作微信缓存
- unity下载并和vs2019关联的步骤
- struts1 使用poi组件 读取excel文件,创建excel ,输出excel文件
- 【Python学习】transpose函数
- HTML部分基础语法
- 香港汇丰银行个人开户资料及流程
- 服务器电源显示灯图标,服务器主机指示灯图标含义
- salesforce 定时任务遇到的坑
热门文章
- 当航运遇上区块链: 有人在砸钱,有人想上车
- (转)高盛:老牌投行新生意,华尔街“谷歌”如何炼成?
- 机器学习笔记(十九):逻辑回归
- 【手写数字识别】基于matlab GUI BP神经网络手写数字识别(手写+带面板)【含Matlab源码 1196期】
- Cannot read property 'style' of null 问题
- Oracle的sql条件带有,oraclesql语句的if
- int main(int argc,char *argv[])该函数中int argc和argv[]两个参数的理解你懂多少?
- html中如何禁用,如何禁用HTML链接
- ci github 通知_GitHub 欢迎一切 CI 工具
- sql与mysql数据对接_SQL Server 对接MySQL 数据库