编程语言排名滚动效果实现。

 

工具

Python3
pyecharts
requests
正则表达式

 

数据获取

数据来源:
https://www.tiobe.com/tiobe-index/

这家网站上记录了每年每种语言的排名情况

 

 

 

获取数据的代码如下图:

res = requests.get(self.url).text

通过requests模块访问网站URL实时获取数据。

 

数据解析

当加载完网站数据时即可发现我们所需数据部分

 

 

 

这里直接附上操作解析数据代码,主要通过正则表达式处理

def deal_data_html(self):
    date_list = list()
    return_data = []
    names = []
    res = requests.get(self.url).text
    content = \'\'.join(re.findall(r\'series: (.*?)\}\);\', res, re.DOTALL))
    content = re.findall(r\'({.*?})\', content, re.DOTALL)
    for line in content:
        name = \'\'.join(re.findall(r"{name : \'(.*?)\'", line))
        names.append(name)
        data = re.findall(r"\[Date.UTC(.*?)\]", line)
        for i_data in data:
            i_data = re.sub(r\'[()]\', "", i_data)
            value = i_data.split(\',\')[-1].strip()
            date = \'-\'.join(map(lambda x: x.strip(), i_data.split(\',\')[:-1]))
            if name == "Java":
                date_list.append(date)
            return_data.append({date: {name: value}})
    # print(return_data)
    # 赋值初始化
    msg_dict = {i: {j: 0 for j in names}for i in date_list}
    # print(msg_dict)
    # 给字典赋实际值
    for k, v in msg_dict.items():
        for i in return_data:
            for i_k, i_v in i.items():
                if k == i_k:
                    v.update(i_v)
    # print(msg_dict)

 

效果图

接下来就是关键效果图输出了,这里采用了Pyecharts模块包。具体如下图所示。

 

实现代码:

@staticmethod
def line_bar(msg_dict):
    t1 = Timeline().add_schema(play_interval=200)
    for date, msg in msg_dict.items():
        bar = (
            Bar()
            .add_xaxis([\'C\', \'Java\', \'Python\', \'C++\', \'C#\', \'Visual Basic\', \'JavaScript\', \'PHP\', \'SQL\', \'Assembly language\'])
            .add_yaxis("语言热门度", [msg[key] for key in msg.keys()], label_opts=opts.LabelOpts(position="right"))
            .reversal_axis()
            .set_global_opts(title_opts=opts.TitleOpts("20年编程语言排名 {}".format(date)),
                             legend_opts=opts.LegendOpts(is_show=False)
            )
        )
        t1.add(bar, date)
    t1.render("20年编程语言排名.html")

 

源码请前往原文获取:

https://mp.weixin.qq.com/s?__biz=Mzg3OTExODI3OA==&mid=2247483927&idx=1&sn=87547f528b852527378cc9ed8116f48a&chksm=cf0810bef87f99a8133096d962807b91bdb9f99e9f1227c22ccbf8449b6053a740490686811b&token=1106491029&lang=zh_CN#rd

 

 

版权声明:本文为wmzhong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wmzhong/p/14476665.html?ivk_sa=1024320u