新闻| 文章| 资讯| 行情| 企业| wap手机版| article文章| 首页|会员中心|保存桌面|手机浏览
普通会员

东明市亦寒科技有限公司

企业列表
新闻列表
  • 暂无新闻
推荐企业新闻
联系方式
  • 联系人:李女士
首页 > 新闻中心 > python微博热搜饼形图_手把手教你用Python+Pyecharts让微博热搜榜动起来
新闻中心
python微博热搜饼形图_手把手教你用Python+Pyecharts让微博热搜榜动起来
发布时间:2024-11-14        浏览次数:0        返回列表

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

python微博热搜饼形图_手把手教你用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('', '').replace('', '')  # 微博热度

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=pd.read_csv('微博热搜.csv',encoding='gbk')

2.基本动态图画法

from pyecharts import options as opts

from pyecharts.charts import Bar, Timeline

from pyecharts.faker import Faker

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

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

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

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

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

5.设置播放速度,隐藏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()

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

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