上海中考分数线爬虫及使用plotly数据可视化
上海中考分数线爬虫及使用plotly数据可视化
马上就中考了,蹭一波热度,做了一个上海市近几年中考分数线对比的爬虫,各区学校对比用了柱状图,各校历年分数线变化用了线形图
效果如下:
数据来源:微信小程序 升学查分
数据获取代码
#-----------------引入区-----------------
import requests
import pandas as pd
from urllib.parse import quote
#-----------------常数区-----------------
dict = {}
df=pd.DataFrame()
res=requests.session()
token=''#自行抓包获取
h={"API-CITY": quote('上海市'),"API-TOKEN": token,"Accept-Encoding": "gzip,compress,br,deflate","Connection": "keep-alive","Host": "xiaokedou.xkd100.com","Referer": "https://servicewechat.com/wxd588a54f779b2090/43/page-frame.html","User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.6(0x18000632) NetType/WIFI Language/zh_CN","content-type": "application/json"}
#-----------------函数区-----------------
def getcode(year,vol,area):#获取数据
url='https://xiaokedou.xkd100.com/api/mid/search?year='+year+'&volunteer='+vol+'&area='+areas=res.get(url,headers=h).json()['data']['list']dd={}for i in s:sname=i['school_name']scode=i['recruit_code']sline=i['score_line']stype=i['volunteer_type']dd.update({sname:{'stype':stype,'scode':scode,'sline':sline}})return dd
def getlist():#获取列表构造数据框架url='https://xiaokedou.xkd100.com/api/mid/where's=res.get(url,headers=h).json()['data']['where']years=s['years']volunteers=s['volunteers']areas=s['areas']for area in areas:dic = {}for vol in volunteers:ys={}for year in years:x=getcode(str(year),vol,area)ys.update({year:x})dic.update({vol:ys})dict.update({area:dic})print(area)
if __name__ == '__main__':
getlist()pt=df.from_dict(dict)#将dict转为dateframept.to_json('data.json')#转存位json文件
数据可视化代码
#-----------------引入区-----------------
import pandas as pd
import plotly
import plotly.graph_objects as go
import plotly.io as po
import os
#-----------------常数区-----------------
df=pd.DataFrame()
x=pd.read_json('data.json')
pl=plotly.plot
#-----------------函数区-----------------
def zhu(year,zhiyuan,area,dd,dic):#通过数据画线性图,并存入jpg图片文件line = go.Bar(x=dd, y=dic)layout = go.Layout(title=year + area + zhiyuan)fg = go.Figure(line, layout)path = 'tmp/' + area + '/' + zhiyuan + '/'if os.path.exists(path) == False:os.makedirs(path)po.write_image(fg, path + year + '.jpg', width=1920, height=1080)
def li(school,zhiyuan,area,dd,dic):#通过数据画柱状图,并存入jpg图片文件line = go.Scatter(x=dd, y=dic)layout=go.Layout(title = school+area+zhiyuan)fg = go.Figure(line,layout)path='score/'+area+'/'+zhiyuan+'/'if os.path.exists(path)==False:os.makedirs(path)po.write_image(fg,path+school+'.jpg',width=1920,height=1080)
def compare():#横向对比每年各区各校分数线情况for area in x:s = df.from_dict(x[area]).Tfor zhiyuan in s:ss=s[zhiyuan][0]for year in ss:dic = []dd = []for j in ss[year]:dd.append(j)dic.append(float(ss[year][j]['sline']))zhu(year,zhiyuan,area,dd,dic)
def getline():#纵向对比每个学校各志愿分数线情况for area in x:s = df.from_dict(x[area]).Tfor zhiyuan in s:ss = s[zhiyuan][0]schools=ss['2020'].keys()for school in schools:dd = []dic = []for i in ss:try:score=float(ss[i][school]['sline'])dd.append(i)dic.append(score)except:passli(school,zhiyuan,area,dd,dic)
if __name__ == '__main__':getline()compare()
最后成果
链接: https://pan.baidu.com/s/1QXbLiPCaSNByiyJNdVUzXg 密码: vows
最后祝各位考生旗开得胜!
这是老魏的公众号,会发布一些爬虫案例和心得,大家可以一起交流
上海中考分数线爬虫及使用plotly数据可视化相关推荐
- 基于plotly数据可视化_如何使用Plotly进行数据可视化
基于plotly数据可视化 The amount of data in the world is growing every second. From sending a text to clicki ...
- 基于plotly数据可视化_[Plotly + Datashader]可视化大型地理空间数据集
基于plotly数据可视化 简介(我们将创建的内容): (Introduction (what we'll create):) Unlike the previous tutorials in thi ...
- python 气泡图 聚类_10大Plotly数据可视化美图及工具介绍
原标题:10大Plotly数据可视化美图及工具介绍 作者:李华芳 文章整理出了2015年最优秀的十个Plotly图表,这些交互式的图表使用Plotly的web app和APIs制作而成. 第十位. & ...
- 教你用python爬英雄联盟官网:①掌握爬虫技术;②Python数据可视化
大家好,我是明月十四桥!! 擅长领域:python黑科技.大数据后端研发.数据仓库 今日重点: ① 掌握爬虫技术,体会python爬虫流程,可见即可爬: ② 学会使用python数据可视化. 有问 ...
- 爬虫+MySQL+flask+echarts数据可视化
最近在学习数据可视化知识,就拿了小时候玩的洛克王国练了练手,爬取每个精灵的各项属性数据,存入到数据库中,并用flask框架进行可视化出来. 1.首先分析一下整个页面,所有的精灵信息存储在一个ul标签中 ...
- 手把手学爬虫第六弹——数据可视化
目录 什么是数据可视化 常见图表类型 认识Matplotlib Matplotlib简答使用 使用默认画布 通过figure()函数创建画布 通过subplot()函数创建单个子图 通过subplot ...
- 基于Python的网络爬虫爬取天气数据可视化分析
目录 摘 要 1 一. 设计目的 2 二. 设计任务内容 3 三. 常用爬虫框架比较 3 四.网络爬虫程序总体设计 3 四. 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程 ...
- python 气泡图 聚类_2015年度10大Plotly数据可视化美图及工具介绍
文章整理出了2015年最优秀的十个Plotly图表,这些交互式的图表使用Plotly的web app和APIs制作而成. 第十位. "2001-2014对同性婚姻的支持" 这些Tu ...
- 中医证型关联规则----apriori算法挖掘及plotly数据可视化
中医证型关联规则挖掘 建模流程 导入常用包 可视化统计分析 数据离散化处理 生成结果数据表 分类变量可视化 导出算法所需格式 导入apriori算法 结果展示 结果说明 建模流程 导入常用包 from ...
最新文章
- HashTable原理与实现
- matlab读取h5文件
- global mapper 制作地形图_福州大飞机模型制作厂家,产品模型,期待合作_境海模型...
- 网络爬虫--2.HTTP和HTTPS
- Centos下SVN环境部署记录
- c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
- 那些不知所措的运算符优先级
- 「创作之秋」| 参赛成员- 获奖名单(参与奖)
- 韩家炜课题组重磅发文:文本分类只需标签名称,不需要任何标注数据!
- 【MEMS传感器】BMI160九轴传感器SPI驱动
- Kindle 2 初探
- linux 怎么进终端,进入Linux终端界面的方法汇总
- 洛谷 P4218 [CTSC2010]珠宝商 后缀自动机+点分治
- # DZY Love Math 系列
- 攻防世界pwn新手区整理
- KUDU表的增删改查
- Google云计算的基础架构
- IT行业零基础可以学习吗?
- SQLite管理软件 - SQLite Developer
- 安全基础教育第一季:堡垒是从内部攻破的
热门文章
- 【Linux】从冯诺依曼体系到初识Linux下的进程
- redis过期key监听事件
- 我给鸿星尔克写了一个720°看鞋展厅
- java基础火车站售票(线程安全)
- Calendar类、System类、StringBuilder类、包装类
- 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列
- 基于51单片机的8个小彩灯花样流水灯proteus仿真汇编语言
- 深入理解for update 和 lock in share mode
- Chart.js入门:简介
- ios 获取沙盒文件名_iOS_沙盒(sandbox)机制及获取沙盒路径和文件操作(NSFileManager)...