python爬取薛之谦微博数据的具体代码
时间: 2025-05-31 18:52:58 浏览: 15
### 使用 Python 爬取薛之谦微博数据
为了实现对薛之谦微博数据的爬取,可以采用 `requests` 库来模拟 HTTP 请求,并通过解析 JSON 数据提取所需的信息。以下是完整的代码示例以及说明。
#### 安装依赖库
在开始之前,请确保已安装以下 Python 库:
```bash
pip install requests
pip install pandas
pip install matplotlib
```
这些库的作用如下:
- **requests**: 发送 HTTP 请求以获取目标网页的内容[^1]。
- **pandas**: 对爬取的数据进行整理和分析。
- **matplotlib**: 可视化数据分析结果[^1]。
#### 微博 API 接口
新浪微博提供了公开的接口供开发者调用。对于用户微博内容的爬取,通常可以通过访问用户的主页 URL 并解析其动态加载的 JSON 数据完成。假设我们需要爬取薛之谦的微博数据,则可以从他的微博 ID 或昵称入手构建请求地址。
#### 示例代码
以下是一个简单的 Python 脚本,用于爬取薛之谦的部分微博数据:
```python
import requests
import json
import pandas as pd
def fetch_weibo_data(uid, page=1):
"""
获取指定用户的微博数据
参数:
uid (str): 用户唯一标识符
page (int): 需要抓取的页码,默认第一页
返回:
list: 当前页面的所有微博数据列表
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
url = f"https://m.weibo.cn/api/container/getIndex?type=uid&value={uid}&containerid=107603{uid}&page={page}"
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
statuses = data['data']['cards']
weibos = []
for status in statuses:
if 'mblog' in status:
mblog = status['mblog']
text = mblog['text'] # 微博文本
created_at = mblog['created_at'] # 创建时间
attitudes_count = mblog['attitudes_count'] # 点赞数
comments_count = mblog['comments_count'] # 评论数
reposts_count = mblog['reposts_count'] # 转发数
weibos.append({
'text': text,
'created_at': created_at,
'attitudes_count': attitudes_count,
'comments_count': comments_count,
'reposts_count': reposts_count
})
return weibos
else:
print(f"Failed to retrieve data from Weibo API. Status code: {response.status_code}")
return []
# 假设薛之谦的 UID 是 "1803063002"
sch_uid = "1803063002"
weibo_list = fetch_weibo_data(sch_uid)
df = pd.DataFrame(weibo_list)
print(df.head())
```
此脚本的功能包括:
1. 构建针对特定用户(UID)的微博 API 请求链接。
2. 提取每条微博的核心字段,如文本、创建时间、点赞数、评论数和转发数。
3. 将结果保存至 Pandas DataFrame 中以便进一步处理或导出。
#### 数据可视化
如果希望对爬取的结果进行可视化展示,可利用 Matplotlib 绘图工具包绘制统计图表。例如,按时间轴显示点赞数量的变化趋势。
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.plot(df['created_at'], df['attitudes_count'])
plt.title('Sch Chi-Qian Weibo Likes Over Time')
plt.xlabel('Date Created')
plt.ylabel('Likes Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
```
以上代码片段展示了如何基于日期维度观察某段时间内的互动情况变化曲线。
---
阅读全文
相关推荐

















