python爬取关键词微博话题
时间: 2025-01-15 10:17:40 浏览: 62
### 使用Python实现微博话题关键词爬取
#### 准备工作
为了成功从微博上抓取指定话题下的关键词相关内容,准备工作必不可少。这包括安装必要的库以及了解目标网页的数据结构。对于微博而言,在浏览器中利用开发者工具可以定位到包含所需数据的请求路径[^3]。
#### 安装依赖库
在开始编码之前,需确保已安装`requests`用于发起HTTP请求;`pandas`负责处理并存储最终获取的信息至Excel文档;还有`openpyxl`支持Pandas操作Excel文件格式。可以通过pip命令来完成这些软件包的安装:
```bash
pip install requests pandas openpyxl
```
#### 编写爬虫代码
下面是一份基于上述准备工作的简单Python脚本实例,它能够根据给定的话题关键词执行基本的微博内容检索,并将结果导出成Excel表格形式。
```python
import json
import time
from typing import List, Dict, Any
import requests
import pandas as pd
def fetch_weibo_data(keyword: str, max_pages: int = 5) -> List[Dict[str, Any]]:
base_url = "https://m.weibo.cn/api/container/getIndex"
container_id = f"100103type=1&q={keyword}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Referer': 'https://m.weibo.cn/search?containerid=' + container_id,
}
all_items = []
for page in range(1, max_pages + 1):
params = {'containerid': container_id, 'page_type': 'searchall', 'page': page}
response = requests.get(base_url, headers=headers, params=params)
if not response.ok or 'data' not in (json_response := response.json()):
break
cards = json_response['data']['cards']
items = [{'text': card['mblog']['text'], 'created_at': card['mblog']['created_at']}
for card in cards if 'mblog' in card and isinstance(card['mblog'], dict)]
all_items.extend(items)
# 防止被封IP,适当延时
time.sleep(2)
return all_items
if __name__ == "__main__":
keyword = input("请输入要查询的关键字:") # 用户输入想要查找的话题关键词
weibos = fetch_weibo_data(keyword)
df = pd.DataFrame(weibos)
output_file_path = './output.xlsx'
df.to_excel(output_file_path, index=False)
print(f"已完成{len(weibos)}条记录的保存")
```
此段程序通过模拟移动端访问接口的方式获取微博搜索页面的结果列表,并从中解析出每篇帖子的文字内容及其发布时间等信息。最后会把这些信息整理为DataFrame对象并通过Pandas的方法将其存入本地磁盘上的Excel文件里[^1]。
#### 数据预处理与分析
一旦完成了原始微博文本数据的收集之后,下一步就是对其进行清理和转换以便后续更深入地挖掘价值所在。比如去除HTML标签、过滤掉无关字符或是进行中文分词处理等工作都可以借助第三方库如jieba来进行高效实施[^2]。
阅读全文
相关推荐


















