Python爬取头条新闻评论时返回信息为空,如何解决?
我在爬头条新闻评论时遇到一个奇怪的问题,用 postman 模拟请求可以正常获得数据, 但用 python requests 模块写的请求获取到的数据总是空的,有返回信息,但里面没有有用的价值。 接口类似于这种: https://www.toutiao.com/api/comment/list/?group_id=6533396129860551182&item_id=6533396129860551182
postman 返回数据: { message: "success", data: { has_more: true, total: 65, comments: [ { text: "充电一回,能用半年,我们就买。", digg_count: 293, reply_data: { reply_list: [ ] }, ....省略很多}
python 程序返回数据: {"message": "success", "data": { "has_more": false, "total": 0, "comments": []}}
Python爬取头条新闻评论时返回信息为空,如何解决?
抓 postman 和 py 请求的数据包,比较有啥不同,然后慢慢改
遇到爬取头条评论返回空数据的问题,通常是因为请求缺少必要的参数或头信息。头条的评论接口一般是动态加载的,需要模拟真实浏览器的请求。下面是一个可运行的示例,重点在于构造完整的请求:
import requests
import json
def fetch_toutiao_comments(news_id, max_count=20):
"""
获取头条新闻评论
news_id: 新闻ID(从新闻URL中提取)
max_count: 想获取的评论数量
"""
# 评论API地址(需要根据实际情况调整)
url = f'https://www.toutiao.com/article/v2/tab_comments/'
# 关键参数
params = {
'aid': 24, # 固定值
'group_id': news_id, # 新闻ID
'item_id': news_id,
'offset': 0,
'count': max_count,
'sort': 'new', # 按时间排序
}
# 必须的请求头(缺少这些会返回空)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': f'https://www.toutiao.com/article/{news_id}/',
'Accept': 'application/json, text/javascript',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
}
try:
resp = requests.get(url, params=params, headers=headers, timeout=10)
resp.raise_for_status()
data = resp.json()
# 解析评论数据
if data.get('data') and data['data'].get('comments'):
comments = data['data']['comments']
for cmt in comments:
print(f"用户: {cmt.get('user_name', '')}")
print(f"评论: {cmt.get('text', '')}")
print("-" * 40)
return comments
else:
print("未找到评论数据,响应结构:", json.dumps(data, indent=2, ensure_ascii=False))
return []
except Exception as e:
print(f"请求失败: {e}")
return []
# 使用示例
if __name__ == '__main__':
# 替换成你要爬取的新闻ID
news_id = "1234567890" # 示例ID,需要从实际新闻URL获取
fetch_toutiao_comments(news_id)
关键点说明:
- 获取正确的news_id:从新闻页URL中提取,通常是数字ID
- 必须的请求头:
User-Agent和Referer是必须的,缺少会导致空响应 - 参数验证:
aid=24是固定值,group_id和item_id通常相同 - 响应处理:检查返回的JSON结构,头条的评论通常在
data.comments路径下
调试建议:
- 先用浏览器开发者工具查看真实的评论请求,复制完整的URL和headers
- 如果还是返回空,尝试添加
Cookie(可能需要登录状态) - 注意频率控制,避免被封IP
总结:检查请求参数和头信息是否完整。
UA 问题吧
估计没带 UA
如果 UA 是 PC 浏览器,如果没有登录,头条是限制评论显示的,不仅禁评,还不给你看,逼用户装手机 app。。。
检查一下 cookies 和 user-agent,使用代理 IP,抓取信息的时候一定要带上

