1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python微博热搜饼形图_手把手教你用Python+Pyecharts让微博热搜榜动起来

python微博热搜饼形图_手把手教你用Python+Pyecharts让微博热搜榜动起来

时间:2023-08-10 05:11:56

相关推荐

python微博热搜饼形图_手把手教你用Python+Pyecharts让微博热搜榜动起来

今天教大家如何用pyecharts制作微博热搜榜动态展示视频,先上视频看看效果:

教程主要有2部分:

一是python爬取微博热搜内容 二是用pyecharts制作动态视频

下面给大家详细介绍一下

一、爬取微博热搜内容

微博热搜网址为:

/top/summary

经分析,微博热搜数据就在网页中,可以直接requests请求,然后BeautifulSoup解析获取内容,最后存入表格中,代码如下(完整代码在文末):

fori,iteminenumerate(items[1:11]):

result=[]

rank='第{0}名'.format(i+1)#微博排名

num=str(item.find('span')).replace('','').replace('','')#微博热度

title=item.find('a').text#微博内容

result.append(time_stamp)

result.append(rank)

result.append(num)

result.append(title)

withopen('1.csv','a+',newline='')asf:

f_csv=csv.writer(f)

f_csv.writerow(result)

微博热搜一般是1分钟更新一次,所以再给代码加个定时器:

schedule.every(1).minutes.do(run)#run为自定义热搜爬虫函数,设置1分钟爬取1次

whileTrue:

schedule.run_pending()

让程序跑一会,我们的数据就弄好了

二、开始画动态图

1.pandas读取数据

importpandasaspd

data=pd.read_csv('微博热搜.csv',encoding='gbk')

2.基本动态图画法

frompyechartsimportoptionsasopts

frompyecharts.chartsimportBar,Timeline

frompyecharts.fakerimportFaker

x=Faker.choose()

tl=Timeline()

foriinrange(,):

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()

3.将图形反转,导入横坐标(排名)、纵坐标(热度)

tl=Timeline()

foriinrange(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()

4.将标签放置在图形右边,将图形整体右移

frompyecharts.chartsimportBar,Timeline,Grid

tl=Timeline()

foriinrange(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()

5.设置播放速度,隐藏timeline组件,设置自动播放

tl=Timeline()

foriinrange(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()

6.设置主题,增加时间标签

tl=Timeline({"theme":ThemeType.MACARONS})

foriinrange(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()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。