今天来和小伙伴们介绍点不一样的~ 哈哈 😝
如下图~
看到这图你想到什么了呢~
其实只是我无聊,找个地方练练爬虫 哈哈,然后对数据进行可视化操作,就有了这么一个3d图表
而且还是有点小收获的,让我来简单介绍下先吧!
爬取的目标
如图所示,此次爬取的目标是 后端排行榜 ,没错 就是这么些数据,然后对作者对应的赞,等级,进行可视化操作
API获取
然后呢,按下浏览器的 F12
就可以从控制台中找到对应的 API
了
从上图红框中我们可以发现,这里使用的是 Http2.0
,和之前爬公众号的一样,要导入这个包 from hyper.contrib import HTTP20Adapter
Http2.0
Http2.0
有几个新特点:
- 新的二进制格式
- 多路复用(MultiPlexing)
- header压缩
- 服务端推送(server push)
Http2.0
中头部压缩的原理:(谷歌技术专家大佬分享的图片)
简单来说呢,就是客户端和服务端都会维护一个静态表格,然后在传输信息时,就可以直接传递这个 header
对应的索引给到对方,不用像之前那样传输 header:get
,可以减少传输大小
有了APi后,我们就是对获取到的数据进行清洗就好了~
pyecharts
清洗完数据后呢,我们要对数据进行可视化操作
这里就不得不提下这个 pyecharts
了,其实它是 封装了这个 echarts
图表库,类似 vue
封装的 v-charts
,所以很多参数不明白的话,得去 echarts
官方文档查看,还可以在线调试😄
👉 pyecharts
官方文档:pyecharts.org/#/zh-cn/int…
👉 echarts
官方文档: echarts.apache.org/examples/zh…
真的很好看😄
代码
代码在官网就有,直接将上面的 demo 抄过来,进行简单的改造就可以啦
代码也比较简单,这里就简单说下核心步骤啦😄,最后将数据填到上面 demo
的相应位置就可以了
# 填充数据,获取最大的赞 def parse_user_and_got_max_count(users, userNames, b3d_data): max_digg_count = 0 for user in users: user_name = dict(user).get('user_name') userNames.append(user_name) user_index = len(userNames) - 1 got_digg_count = dict(user).get('got_digg_count') # got_view_count = dict(user).get('got_view_count') level = dict(user).get('level') b3d_data.append([level - 1, user_index, got_digg_count]) if got_digg_count > max_digg_count: max_digg_count = got_digg_count return max_digg_count 复制代码
运行结果如下,打开生成的 html
页面即可。
效果
最后再来看一下这个效果叭~😝 感觉挺炫的