揭秘微博年度热点:Python 爬取热搜关键词并制作词云图
微博作为国内头部的社交媒体平台其热搜榜堪称 “网络热点晴雨表”汇聚了一年内大众最关注的社会事件、娱乐热点、行业动态。本文将手把手教你用 Python 爬取微博近一年的热搜关键词通过数据清洗、关键词提取最终生成直观的词云图让你用技术视角读懂年度网络热点。一、技术选型与实现思路在开始编码前我们先明确核心技术栈和实现逻辑确保整个流程清晰可控核心依赖库requests发送 HTTP 请求获取微博热搜页面数据BeautifulSoup4解析 HTML 页面提取热搜关键词pandas数据清洗与存储处理爬取到的热搜列表wordcloud生成词云图可视化热搜关键词matplotlib展示词云图调整可视化效果jieba中文分词针对长文本热搜提取核心关键词。实现思路分析微博热搜页面结构确定数据爬取的目标节点编写爬虫脚本循环爬取近一年的热搜数据按日期分段爬取对爬取的数据进行清洗去除重复、无效关键词统计关键词出现频次生成词频字典基于词频字典制作个性化词云图完成可视化。二、环境准备首先需要安装所需依赖库打开终端执行以下命令bash运行pip install requests beautifulsoup4 pandas wordcloud matplotlib jieba注意若安装 wordcloud 失败Windows 用户可下载对应版本的 whl 文件手动安装Mac/Linux 用户可先安装 libpng 和 freetype 依赖。三、完整代码实现步骤 1爬取微博热搜数据微博热搜分为实时热搜、历史热搜由于官方未直接提供 “年度热搜” 接口我们以 “微博历史热搜查询” 平台为例也可替换为微博官方热搜页爬取按日期归档的热搜数据。python运行import requests from bs4 import BeautifulSoup import pandas as pd import time from datetime import datetime, timedelta # 定义请求头模拟浏览器访问避免被反爬 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 } def get_weibo_hot_search(start_date, end_date): 爬取指定日期范围内的微博热搜关键词 :param start_date: 起始日期格式如2025-01-01 :param end_date: 结束日期格式如2025-12-31 :return: 包含日期和热搜关键词的列表 hot_search_list [] # 转换日期格式为datetime对象便于循环 start datetime.strptime(start_date, %Y-%m-%d) end datetime.strptime(end_date, %Y-%m-%d) current_date start while current_date end: # 格式化日期为目标页面所需格式示例格式需根据实际爬取平台调整 date_str current_date.strftime(%Y%m%d) url fhttps://example.com/weibo/hot/{date_str} # 替换为真实的历史热搜页面URL try: # 发送请求设置超时和重试机制 response requests.get(url, headersheaders, timeout10) response.raise_for_status() # 抛出HTTP请求异常 soup BeautifulSoup(response.text, html.parser) # 解析热搜关键词需根据实际页面结构调整CSS选择器 # 示例假设热搜条目在class为hot-item的div中关键词在span标签 hot_items soup.find_all(div, class_hot-item) for item in hot_items: keyword item.find(span).text.strip() # 过滤无效关键词如空字符串、广告类内容 if keyword and 广告 not in keyword: hot_search_list.append({ date: current_date.strftime(%Y-%m-%d), keyword: keyword }) print(f成功爬取{current_date.strftime(%Y-%m-%d)}的热搜数据共{len(hot_items)}条) time.sleep(1) # 延迟1秒避免请求过快被封IP except Exception as e: print(f爬取{current_date.strftime(%Y-%m-%d)}数据失败{str(e)}) # 日期加1天继续爬取下一天 current_date timedelta(days1) return hot_search_list # 爬取2025年全年热搜数据 if __name__ __main__: hot_data get_weibo_hot_search(2025-01-01, 2025-12-31) # 将数据存入DataFrame便于后续处理 df pd.DataFrame(hot_data) # 保存为CSV文件避免重复爬取 df.to_csv(weibo_hot_search_2025.csv, indexFalse, encodingutf-8-sig) print(f爬取完成共获取{len(df)}条热搜数据已保存至weibo_hot_search_2025.csv)代码说明font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);headers/font模拟浏览器请求避免被微博反爬机制拦截font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);get_weibo_hot_search/font函数按日期循环爬取核心是通过font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);BeautifulSoup/font解析页面提取关键词加入异常处理和延迟请求提升爬虫的稳定性最终将数据保存为 CSV 文件方便后续清洗和分析。步骤 2数据清洗与词频统计爬取的数据可能包含重复关键词、无效字符需先清洗再统计频次python运行import pandas as pd import jieba def clean_and_count_keywords(csv_path): 清洗热搜数据并统计关键词频次 :param csv_path: 爬取的热搜数据CSV文件路径 :return: 词频字典 {关键词: 出现次数} # 读取CSV文件 df pd.read_csv(csv_path, encodingutf-8-sig) # 1. 去重按关键词和日期去重避免同一天重复爬取同一热搜 df df.drop_duplicates(subset[date, keyword], keepfirst) # 2. 合并所有关键词为一个字符串便于分词和统计 all_keywords .join(df[keyword].tolist()) # 3. 中文分词针对长文本热搜如XX事件最新进展提取核心词XX事件 seg_list jieba.lcut(all_keywords) # 过滤停用词和短字符如单个字、标点 stop_words [的, 了, 在, 是, 我, 有, 都, 就, 和, 为] # 可扩展停用词表 filtered_seg [word for word in seg_list if len(word) 1 and word not in stop_words] # 4. 统计词频 word_freq {} for word in filtered_seg: word_freq[word] word_freq.get(word, 0) 1 # 按词频降序排序 sorted_word_freq sorted(word_freq.items(), keylambda x: x[1], reverseTrue) print(词频TOP10) for word, freq in sorted_word_freq[:10]: print(f{word}: {freq}次) return dict(sorted_word_freq) # 执行数据清洗和词频统计 word_freq_dict clean_and_count_keywords(weibo_hot_search_2025.csv)代码说明先通过font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);drop_duplicates/font去重避免同一日期的重复热搜影响统计使用font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);jieba/font分词拆分长文本热搜的核心关键词过滤停用词和单个字符提升词频统计的准确性最终生成按频次降序排列的词频字典便于制作词云。步骤 3制作词云图基于词频字典生成个性化词云图直观展示年度热搜关键词python运行from wordcloud import WordCloud import matplotlib.pyplot as plt import numpy as np from PIL import Image def generate_wordcloud(word_freq, mask_pathNone): 生成词云图 :param word_freq: 词频字典 :param mask_path: 词云形状蒙版图片路径可选 # 设置词云参数 wc WordCloud( font_pathsimhei.ttf, # 必须指定中文字体否则乱码Windows系统simhei.ttfMac用Arial Unicode.ttf width1000, height600, background_colorwhite, # 背景色 max_words200, # 显示最多200个关键词 max_font_size150, # 最大字体大小 masknp.array(Image.open(mask_path)) if mask_path else None, # 词云形状可选 colormapviridis # 配色方案 ) # 生成词云 wc.generate_from_frequencies(word_freq) # 展示词云图 plt.figure(figsize(12, 8)) plt.imshow(wc, interpolationbilinear) plt.axis(off) # 隐藏坐标轴 plt.title(2025年微博热搜关键词词云图, fontsize20, pad20) # 保存词云图 plt.savefig(weibo_hot_wordcloud_2025.png, dpi300, bbox_inchestight) plt.show() # 生成词云图可替换mask_path为自定义形状图片路径如微博logo generate_wordcloud(word_freq_dict, mask_pathweibo_mask.png) # 无蒙版则设为None代码说明指定中文字体是关键否则词云会出现乱码Windows 系统可直接用font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);simhei.ttf/fontMac/Linux 需替换为系统自带中文字体路径font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);mask/font参数可自定义词云形状如微博 logo、心形等提升可视化效果最终生成的词云图保存为高清 PNG 文件便于查看和分享。四、常见问题与优化方案反爬限制若爬取时出现 403/503 错误可增加代理 IP 池推荐亿牛云爬虫代理、延长请求间隔或使用font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);selenium/font模拟浏览器渲染针对动态加载的热搜页面数据不全部分日期的热搜数据缺失可通过多源爬取如微博官方热搜、第三方数据平台补充词云效果差可扩展停用词表或调整font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);max_words/font、font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);font_size/font等参数也可根据关键词类别如娱乐、社会生成分类词云效率优化爬取全年数据耗时较长可采用多线程 / 多进程爬取提升效率。五、技术应用场景这套技术方案不仅适用于微博热搜分析还可拓展到自媒体运营分析年度热点辅助内容选题舆情分析企业监控品牌相关热搜及时响应舆情学术研究研究网络热点的传播规律和大众关注点变化个人学习掌握 Python 爬虫、数据可视化的核心技能。六、总结本文从技术选型、代码实现到优化方案完整讲解了用 Python 爬取微博年度热搜并制作词云图的全过程。通过这套流程你不仅能获取微博全年热点数据还能掌握爬虫、数据清洗、可视化等核心 Python 技能。值得注意的是爬取数据时需遵守平台 robots 协议避免过度请求给服务器造成压力同时词云图仅为可视化手段结合词频统计、时间维度分析能更全面地解读年度热点背后的规律。

相关新闻

手把手教你用LiuJuan20260223Zimage:一键生成惊艳水墨风人像

手把手教你用LiuJuan20260223Zimage:一键生成惊艳水墨风人像

手把手教你用LiuJuan20260223Zimage:一键生成惊艳水墨风人像 1. 从零开始:认识你的国风AI画师 想象一下,你是一位热爱东方美学的创作者,想为你的小说主角设计一幅水墨风格的汉服肖像,或者为你的文创产品寻找一张充满…

2026/7/3 16:23:36 阅读更多 →
Midjourney实战:5分钟搞定动漫角色设计全流程(附教科书级Prompt模板)

Midjourney实战:5分钟搞定动漫角色设计全流程(附教科书级Prompt模板)

Midjourney实战:5分钟搞定动漫角色设计全流程(附教科书级Prompt模板) 最近身边不少刚开始接触动漫设计的朋友都在问我,有没有一种方法能快速把脑子里的角色形象“可视化”,并且还能生成一套像教科书插图那样清晰、可供…

2026/7/3 0:34:00 阅读更多 →
DeepSeek-R1-Distill-Qwen-1.5B vs Qwen2.5-Math:蒸馏模型性能实战评测

DeepSeek-R1-Distill-Qwen-1.5B vs Qwen2.5-Math:蒸馏模型性能实战评测

DeepSeek-R1-Distill-Qwen-1.5B vs Qwen2.5-Math:蒸馏模型性能实战评测 在AI模型快速发展的今天,如何在保持性能的同时降低计算成本成为了关键挑战。知识蒸馏技术作为解决这一问题的有效方法,正在受到越来越多开发者的关注。今天我们将深入评…

2026/7/4 20:18:25 阅读更多 →

最新新闻

终极ComfyUI TensorRT插件指南:3-10倍AI绘画加速,释放你的RTX显卡潜能

终极ComfyUI TensorRT插件指南:3-10倍AI绘画加速,释放你的RTX显卡潜能

终极ComfyUI TensorRT插件指南:3-10倍AI绘画加速,释放你的RTX显卡潜能 【免费下载链接】ComfyUI_TensorRT 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT 你是否厌倦了漫长的AI图像生成等待时间?每次创作都要盯着进…

2026/7/5 2:18:34 阅读更多 →
YOLO11视频目标检测实战:从环境配置到高级应用

YOLO11视频目标检测实战:从环境配置到高级应用

1. 项目概述 视频目标检测是计算机视觉领域的重要应用场景,而YOLO系列模型因其出色的实时性能成为该任务的首选方案。本文将基于YOLO11模型,详细讲解如何实现视频文件的逐帧检测,并输出带有检测框的可视化视频。 提示:YOLO11是YO…

2026/7/5 2:16:34 阅读更多 →
程序员就业:2026 年还能靠什么拿到,把工具链跑成稳定流程

程序员就业:2026 年还能靠什么拿到,把工具链跑成稳定流程

聊《程序员就业:2026 年还能靠什么拿到,把工具链跑成稳定流程》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要这篇面向准备找工作、跳槽或转型的程序员,但不会把“程序员就业…

2026/7/5 2:16:34 阅读更多 →
NSK滚珠丝杠W3205SS技术解析

NSK滚珠丝杠W3205SS技术解析

为您详细整理 W3205SS-1Z-C5Z10 滚珠丝杠的参数规格、技术特点及产品应用。 (温馨提示:您查询的型号命名规则属于 NSK(日本精工) 的标准产品,而非 NTN。以下内容基于 NSK 精机综合样本为您详细解读。) 该型号属于 NSK 的 SS 系列&…

2026/7/5 2:14:33 阅读更多 →
自定义布局控件

自定义布局控件

讲到自定义布局控件,我们必须得先谈一下在WPF中自定义控件,在WPF自定义控件你可以选择下图的一些基类作为继承对象,你也可以继承自已有的一些控件,这个就看你的需要了。其实开发WPF自定义控件和开发WinForm、ASP.NET自定义控件基本…

2026/7/5 2:12:33 阅读更多 →
Border

Border

Border 是一个装饰的控件,此控件绘制边框及背景,在 Border 中只能有一个子控件(这个子控件又可以包含多个子控件)。Border 的几个重要属性:Background:用用一个 Brush 对象来绘制背景 ;BorderBrush:用一个B…

2026/7/5 2:12:33 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻