问答
怎么导出抖音视频评论做情感分析?
简短回答
用每条视频的 ID 调 okdata 的抖音视频评论接口,顺着游标往下翻;每页约 20 条,$0.002 一次,所以 1,000 条评论需要 50 次调用,共 $0.10。每条评论带内容、点赞、回复数、时间和 IP 属地,可以直接喂给情感模型。
产品团队刚上了一款新手机壳,想知道抖音用户怎么看:夸什么,嘲什么,哪些地区更在意。原材料是相关的 30 条最火视频下的评论区,几千条评论。爬虫常常只抓到视频标题文案,或者翻到一半提示 account blocked。走 API 的话,分三步。
1. 选视频
用抖音视频搜索,sort=most_liked;或者用视频详情把已有的分享链接转成 ID。每条视频的 metrics.comments 能告诉你评论区有多大。
2. 拉评论
抖音视频评论传入视频 id,可选 sort(hot 或 latest)。每条评论有 text 内容、published_at 时间、likes 点赞、replies(楼下回复数)、ip_location(抖音展示的省份)和评论者信息。
3. 打分
先清洗文本,再用情感模型或者给大模型一套固定标签去分类,并按点赞数给每条评论加权:一条有 2,000 个赞的吐槽,代表的人比一条零赞的多得多。
费用
| 任务 | 调用次数 | 费用 |
|---|---|---|
| 找 40 条视频 | 搜索 2 页 | $0.04 |
| 30 条视频 × 5 页评论 | 150 | $0.30 |
| 任意视频的 1,000 条评论 | 50 | $0.10 |
脚本
import csv, os, requests
URL = "https://api.okdata.online/v1/douyin/videos/comments/list"
HEAD = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
with open("douyin_comments.csv", "w", newline="", encoding="utf-8-sig") as f:
w = csv.writer(f)
w.writerow(["video_id", "published_at", "text", "likes", "replies", "ip_location"])
for vid in ["7301234567890123456"]:
params = {"id": vid, "sort": "hot"}
for _ in range(5):
body = requests.get(URL, headers=HEAD, params=params, timeout=60).json()
for c in body["data"]["items"]:
w.writerow([vid, c["published_at"], c["text"], c["likes"], c["replies"], c["ip_location"]])
if not body["page"]["has_more"]:
break
params["cursor"] = body["page"]["next_cursor"]
打分之前
- 抖音的表情在文本里是
[捂脸]、[赞]这样的代码。要么映射成情绪提示,要么去掉,很多模型会读错。 - 只有一级评论。视频上的评论数把回复也算进去了,所以导出的行数会比显示的少;
replies能告诉你哪几条下面吵得最凶。 - “哈哈哈”“求链接”这种短评论很多。事先想好,表达购买意向的评论算不算正面。
- IP 属地是抖音展示的省份,不是精确位置。
其他选择
只有一条视频的话,手动往下刷、复制就行。MediaCrawler 这类工具可以用登录账号把评论和回复一起抓下来。舆情系统能直接给出情感分,但每月费用高得多。连同小红书、微博在内的完整报告做法,见口碑分析方案。
更新于