上海中考分数线爬虫及使用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数据可视化相关推荐

  1. 基于plotly数据可视化_如何使用Plotly进行数据可视化

    基于plotly数据可视化 The amount of data in the world is growing every second. From sending a text to clicki ...

  2. 基于plotly数据可视化_[Plotly + Datashader]可视化大型地理空间数据集

    基于plotly数据可视化 简介(我们将创建的内容): (Introduction (what we'll create):) Unlike the previous tutorials in thi ...

  3. python 气泡图 聚类_10大Plotly数据可视化美图及工具介绍

    原标题:10大Plotly数据可视化美图及工具介绍 作者:李华芳 文章整理出了2015年最优秀的十个Plotly图表,这些交互式的图表使用Plotly的web app和APIs制作而成. 第十位. & ...

  4. 教你用python爬英雄联盟官网:①掌握爬虫技术;②Python数据可视化

    大家好,我是明月十四桥!! 擅长领域:python黑科技.大数据后端研发.数据仓库 今日重点: ①  掌握爬虫技术,体会python爬虫流程,可见即可爬: ②  学会使用python数据可视化. 有问 ...

  5. 爬虫+MySQL+flask+echarts数据可视化

    最近在学习数据可视化知识,就拿了小时候玩的洛克王国练了练手,爬取每个精灵的各项属性数据,存入到数据库中,并用flask框架进行可视化出来. 1.首先分析一下整个页面,所有的精灵信息存储在一个ul标签中 ...

  6. 手把手学爬虫第六弹——数据可视化

    目录 什么是数据可视化 常见图表类型 认识Matplotlib Matplotlib简答使用 使用默认画布 通过figure()函数创建画布 通过subplot()函数创建单个子图 通过subplot ...

  7. 基于Python的网络爬虫爬取天气数据可视化分析

    目录 摘 要 1 一. 设计目的 2 二. 设计任务内容 3 三. 常用爬虫框架比较 3 四.网络爬虫程序总体设计 3 四. 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程 ...

  8. python 气泡图 聚类_2015年度10大Plotly数据可视化美图及工具介绍

    文章整理出了2015年最优秀的十个Plotly图表,这些交互式的图表使用Plotly的web app和APIs制作而成. 第十位. "2001-2014对同性婚姻的支持" 这些Tu ...

  9. 中医证型关联规则----apriori算法挖掘及plotly数据可视化

    中医证型关联规则挖掘 建模流程 导入常用包 可视化统计分析 数据离散化处理 生成结果数据表 分类变量可视化 导出算法所需格式 导入apriori算法 结果展示 结果说明 建模流程 导入常用包 from ...

最新文章

  1. HashTable原理与实现
  2. matlab读取h5文件
  3. global mapper 制作地形图_福州大飞机模型制作厂家,产品模型,期待合作_境海模型...
  4. 网络爬虫--2.HTTP和HTTPS
  5. Centos下SVN环境部署记录
  6. c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
  7. 那些不知所措的运算符优先级
  8. 「创作之秋」| 参赛成员- 获奖名单(参与奖)
  9. 韩家炜课题组重磅发文:文本分类只需标签名称,不需要任何标注数据!
  10. 【MEMS传感器】BMI160九轴传感器SPI驱动
  11. Kindle 2 初探
  12. linux 怎么进终端,进入Linux终端界面的方法汇总
  13. 洛谷 P4218 [CTSC2010]珠宝商 后缀自动机+点分治
  14. # DZY Love Math 系列
  15. 攻防世界pwn新手区整理
  16. KUDU表的增删改查
  17. Google云计算的基础架构
  18. IT行业零基础可以学习吗?
  19. SQLite管理软件 - SQLite Developer
  20. 安全基础教育第一季:堡垒是从内部攻破的

热门文章

  1. 【Linux】从冯诺依曼体系到初识Linux下的进程
  2. redis过期key监听事件
  3. 我给鸿星尔克写了一个720°看鞋展厅
  4. java基础火车站售票(线程安全)
  5. Calendar类、System类、StringBuilder类、包装类
  6. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列
  7. 基于51单片机的8个小彩灯花样流水灯proteus仿真汇编语言
  8. 深入理解for update 和 lock in share mode
  9. Chart.js入门:简介
  10. ios 获取沙盒文件名_iOS_沙盒(sandbox)机制及获取沙盒路径和文件操作(NSFileManager)...