爬取Tiobe编程语言排行榜并生成动态图
本文最后更新于831 天前,其中的信息可能已经过时,如有错误请评论留言

先看最终效果

爬取数据并存入CSV

不同功能分成两个文件看的清楚点,调试也方便,代码如下:

// Tiobe.py

import csv
import re
import requests

url = 'https://www.tiobe.com/tiobe-index/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}
# 创建本地文件
f = open('Tiobe.csv', 'w', newline='')
# 分类
writer = csv.DictWriter(f, ['Programming', 'DataPer', 'Data'])
writer.writeheader()
response = requests.get(url, headers=headers)
html = response.text
# 正则清洗数据
result = ''.join(re.findall(r'series: (.*?)}\);', html, re.DOTALL))
result = re.findall(r'({.*?})', result, re.DOTALL)
for item in result:
    name = ''.join(re.findall(r"{name : '(.*?)'", item, re.DOTALL))
    data = re.findall(r"\[Date.UTC(.*?)]", item, re.DOTALL)
    for i in data:
        i = i.replace(' ', '')
        i = re.sub(r'[()]', '', i)
        value = i.split(',')[-1]
        time_list = i.split(',')[:3]
        time = ""
        for index, j in enumerate(time_list):
            if index != 0:
                if len(j) == 1:
                    j = '0' + j
            if index == 0:
                time += j
            else:
                time += '-' + j
        temp = {
            'Programming': name,
            'DataPer': value,
            'Data': time
        }
        writer.writerow(temp)
# 写入本地文件
f.close()

读取CSV文件并生成动态图

// showTiobe.py

import plotly.express as px
import pandas as pd

df = pd.read_csv('Tiobe.csv')
fig = px.bar(df,
             y="Programming",
             x="DataPer",
             animation_frame="Data",
             range_x=[0, df.DataPer.max()],
             orientation='h',
             text='DataPer',
             color="Programming")
# 设置动画排序规则为 DataPer 升序
fig.update_layout(barmode='stack', yaxis={'categoryorder': 'total ascending'})
# 绘制
fig.update_layout(width=700, height=700,
                  xaxis_showgrid=False,
                  yaxis_showgrid=False,  # x y 向线
                  showlegend=True)  # 图例
fig.update_xaxes(title_text="TIOBE趋势图")
fig.show()

这样就完成了,运行后会自动在浏览器打开生成好的动态图
每次都直接给完整代码方便你们CV,上哪找我这么好的人 q(≧▽≦q)

山水有相逢,我们江湖再见!じゃな~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇