教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点 |
您所在的位置:网站首页 › 微博热搜排行如何确定 › 教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点 |
基本开发环境
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 |