前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于python資料分析之禪 ,作者小dull鳥
python資料分析之禪今天教大家如何用pyecharts制作微博熱搜榜動態展示視頻,先上視頻看看效果:
教程主要有2部分:
一是python爬取微博熱搜內容
二是用pyecharts制作動態視頻
下面給大家詳細介紹一下
一、爬取微博熱搜內容
微博熱搜網址為:
https://s.weibo.com/top/summary
經分析,微博熱搜資料就在網頁中,可以直接requests請求,然后BeautifulSoup決議獲取內容,最后存入表格中,代碼如下(完整代碼在文末):
for i, item in enumerate(items[1:11]):
result = [] rank = '第{0}名'.format(i+1) # 微博排名
num = str(item.find('span')).replace('<span>', '').replace('</span>', '') # 微博熱度
title = item.find('a').text # 微博內容
result.append(time_stamp)
result.append(rank)
result.append(num)
result.append(title)
with open('1.csv', 'a+',newline='') as f:
f_csv = csv.writer(f) f_csv.writerow(result)
微博熱搜一般是1分鐘更新一次,所以再給代碼加個定時器:
schedule.every(1).minutes.do(run) #run為自定義熱搜爬蟲函式,設定1分鐘爬取1次
while True:
schedule.run_pending()
讓程式跑一會,我們的資料就弄好了
二、開始畫動態圖
1.pandas讀取資料
import pandas as pd
data=https://www.cnblogs.com/hhh188764/p/pd.read_csv('微博熱搜.csv',encoding='gbk')
2.基本動態圖畫法
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
x = Faker.choose()tl = Timeline()for i in range(2015, 2020):
bar = ( Bar() .add_xaxis(x) .add_yaxis("", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業額".format(i)))
) tl.add(bar, "{}年".format(i))
tl.render_notebook()
2.將圖形反轉,匯入橫坐標(排名)、縱坐標(熱度)
tl = Timeline()
for i in range(20): bar = ( Bar() .add_xaxis(list(data['內容'])[i*10:i*10+10][::-1])
.add_yaxis("微博熱搜榜", list(data['熱度'])[i*10:i*10+10][::-1])
.reversal_axis()
.set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業額".format(i)))
) tl.add(bar, "{}年".format(i))tl.render_notebook()` </pre>
3.將標簽放置在圖形右邊,將圖形整體右移
from pyecharts.charts import Bar, Timeline,Grid
tl = Timeline()for i in range(20): bar = ( Bar() .add_xaxis(list(data['內容'])[i*10:i*10+10][::-1])
.add_yaxis("微博熱搜榜", list(data['熱度'])[i*10:i*10+10][::-1])
.reversal_axis()
.set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業額".format(i)))
.set_series_opts(label_opts=opts.LabelOpts(position="right")) #將標簽放置在圖形右邊
)
tl.add(bar, '')
grid = (
Grid()
.add(bar, grid_opts=opts.GridOpts(pos_left="25%",pos_right="0%")) #將圖形整體右移
) tl.add(grid, '')tl.render_notebook()
4.設定播放速度,隱藏timeline組件,設定自動播放
tl = Timeline()
for i in range(20): bar = ( Bar() .add_xaxis(list(data['內容'])[i*10:i*10+10][::-1])
.add_yaxis("微博熱搜榜", list(data['熱度'])[i*10:i*10+10][::-1])
.reversal_axis()
.set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業額".format(i)))
.set_series_opts(label_opts=opts.LabelOpts(position="right")) #將標簽放置在圖形右邊
)
tl.add(bar, "")
grid = (
Grid()
.add(bar, grid_opts=opts.GridOpts(pos_left="25%",pos_right="0%")) #將圖形整體右移
) tl.add(grid, "") tl.add_schema(
play_interval=100, #播放速度
is_timeline_show=False, #是否顯示 timeline 組件
is_auto_play=False,) #是否自動播放
tl.render_notebook()
5.設定主題,增加時間標簽
tl = Timeline({"theme": ThemeType.MACARONS})
for i in range(20):
bar = ( Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(data['內容'])[i*10:i*10+10][::-1])
.add_yaxis("微博熱搜榜", list(data['熱度'])[i*10:i*10+10][::-1])
.reversal_axis() .set_global_opts( title_opts=opts.TitleOpts("{}".format(list(data['時間'])[i*10]),pos_right='0%',pos_bottom='15%'),
xaxis_opts=opts.AxisOpts( splitline_opts=opts.SplitLineOpts(is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True), axislabel_opts=opts.LabelOpts(color='#FF7F50')),)
.set_series_opts(label_opts=opts.LabelOpts(position="right",color='#9400D3'))
) grid = ( Grid() .add(bar, grid_opts=opts.GridOpts(pos_left="25%",pos_right="0%"))
) tl.add(grid, "{}年".format(i)) #設定標簽
tl.add_schema(
play_interval=100, #播放速度
is_timeline_show=False, #是否顯示 timeline 組件
is_auto_play=True,
)
tl.render_notebook()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60951.html
標籤:Python
上一篇:PHP設計模式之代理模式(Proxy)代碼實體大全(19)
下一篇:637二叉樹的層平均值
