教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点

您所在的位置:网站首页 微博热搜排行如何确定 教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点

教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点

2024-04-07 07:53| 来源: 网络整理| 查看: 265

基本开发环境 Python 3.6Pycharm 相关模块的使用 import requests import parsel import csv import time

安装Python并添加到环境变量,pip安装需要的相关模块即可。

需求数据来源分析

请添加图片描述

热搜榜数据, 每次刷新上面的热度数值都是会发生边改变,每隔一段时间可以爬取一下榜单数据,然后可以做一个数据展示。

热搜榜数据内容还是比较好爬的, 因为是静态网页数据内容, 如果大家有认真看过之前的问题,那么这个网站还是很好爬取的。 请添加图片描述

代码实现

每一分钟爬取一次数据内容

import requests import parsel import csv import time f = open('热榜.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '时间', '排名', '标题', '热度', ]) csv_writer.writeheader() while True: now_time = int(time.time()) timeArray = time.localtime(now_time) date = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) url = 'https://s.weibo.com/top/summary?cate=realtimehot' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', } response = requests.get(url=url, headers=headers) selector = parsel.Selector(response.text) trs = selector.css('#pl_top_realtimehot tbody tr')[:11] for tr in trs: num = tr.css('td.td-01.ranktop::text').get() if num: if num.isdigit(): title = tr.css('.td-02 a::text').get() hot = tr.css('.td-02 span::text').get() dit = { '时间': date, '排名': num, '标题': title, '热度': hot, } print(dit) csv_writer.writerow(dit) time.sleep(60) 动态数据展示 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(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=200, #播放速度 is_timeline_show=False, #是否显示 timeline 组件 is_auto_play=True, ) tl.render_notebook()

请添加图片描述

喜欢可以点一点赞和关注哦! 有问题也可以在下方评论区打出来!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3