python实现3d图表,对掘金后端作者进行可视化操作|Python 主题月

579 阅读2分钟

本文正在参加「Python主题月」,详情查看 活动链接

今天来和小伙伴们介绍点不一样的~ 哈哈 😝

如下图~

image-20210711123925505

看到这图你想到什么了呢~

img

其实只是我无聊,找个地方练练爬虫 哈哈,然后对数据进行可视化操作,就有了这么一个3d图表

而且还是有点小收获的,让我来简单介绍下先吧!

爬取的目标

如图所示,此次爬取的目标是 后端排行榜 ,没错 就是这么些数据,然后对作者对应的赞,等级,进行可视化操作

image-20210711130057215

API获取

然后呢,按下浏览器的 F12 就可以从控制台中找到对应的 API

image-20210711131153507

从上图红框中我们可以发现,这里使用的是 Http2.0 ,和之前爬公众号的一样,要导入这个包 from hyper.contrib import HTTP20Adapter

Http2.0

Http2.0 有几个新特点:

  • 新的二进制格式
  • 多路复用(MultiPlexing)
  • header压缩
  • 服务端推送(server push)

Http2.0 中头部压缩的原理:(谷歌技术专家大佬分享的图片)

hpack-header-compression

简单来说呢,就是客户端和服务端都会维护一个静态表格,然后在传输信息时,就可以直接传递这个 header 对应的索引给到对方,不用像之前那样传输 header:get ,可以减少传输大小

img

有了APi后,我们就是对获取到的数据进行清洗就好了~

pyecharts

清洗完数据后呢,我们要对数据进行可视化操作

这里就不得不提下这个 pyecharts 了,其实它是 封装了这个 echarts 图表库,类似 vue 封装的 v-charts ,所以很多参数不明白的话,得去 echarts 官方文档查看,还可以在线调试😄

👉 pyecharts 官方文档:pyecharts.org/#/zh-cn/int…

👉 echarts 官方文档: echarts.apache.org/examples/zh…

image-20210711191806973

真的很好看😄

image-20210711193005353

代码

代码在官网就有,直接将上面的 demo 抄过来,进行简单的改造就可以啦

image-20210711193501721

代码也比较简单,这里就简单说下核心步骤啦😄,最后将数据填到上面 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 页面即可。

image-20210711194928555

效果

最后再来看一下这个效果叭~😝 感觉挺炫的

image-20210711124839324

最后

好了,我要减肥去了 绝望啊(没想到有一天我也得为发福焦虑 /(ㄒoㄒ)/~~)

img