问答
怎么获取抖音评论者的 IP 属地,并按省份统计?
简短回答
okdata 抖音视频评论接口返回的每条评论都带 ip_location,也就是抖音在评论旁展示的省份,所以按省份统计就是对采到的评论计数。每页约 20 条,$0.002 一次,1,000 条评论共 $0.10;小红书评论也有同样的字段。
一个区域性的食品品牌,想在决定下一家门店开在哪座城市之前,先看看在自家抖音视频下评论的人都在哪里。抖音在每条评论旁边都标了 IP 属地,数据是现成的。可爬虫经常把它弄丢:搜索结果里本来就没有,有的工具从评论里取数时也没映射这个字段。通过 API 取到的每条评论都带这个字段,按省份统计就是数一数。
字段在哪
抖音视频评论的每条评论都带 ip_location,内容就是抖音展示的样子,通常是省份或地区名,比如广东、四川。视频搜索结果里没有这个字段,它属于评论(另外,加 view=full 时账号信息的 ext 里也有)。
步骤
- 选视频:自家的,或者用视频搜索找品类下的热门视频。
- 逐条视频翻评论。
- 统计
ip_location的分布。想看“谁认同”而不是“谁在说”,就按点赞数加权。
费用
| 任务 | 调用次数 | 费用 |
|---|---|---|
| 1,000 条评论 | 50 | $0.10 |
| 20 条视频 × 5 页 | 100 | $0.20 |
| 同样的研究做在 20 篇小红书笔记 × 5 页 | 100 | $2.00 |
脚本
import os, requests
from collections import Counter
URL = "https://api.okdata.online/v1/douyin/videos/comments/list"
HEAD = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
where = Counter()
for vid in ["7301234567890123456"]:
params = {"id": vid, "fields": "ip_location,likes"}
for _ in range(5):
body = requests.get(URL, headers=HEAD, params=params, timeout=60).json()
where.update(c["ip_location"] or "unknown" for c in body["data"]["items"])
if not body["page"]["has_more"]:
break
params["cursor"] = body["page"]["next_cursor"]
print(where.most_common(10))
解读时要小心
- 这是抖音按评论者 IP 标注的属地,精确到省一级。VPN、出差、移动网络都会让它不准,也说明不了城市或区县。
- 有的评论没有属地标注,统计时记为未知,不要直接丢掉。
- 评论者不等于观众。会留言的人偏向活跃粉丝,结果应该理解为“讨论发生在哪里”。
- 只有一级评论;回复数按条记录,但回复本身不返回。
其他选择
如果是自己的账号,抖音创作者中心里能看到观众的地域分布,回答“我的受众在哪”更合适。星图能看到你可能合作的达人的粉丝地域。要比较竞品视频之间的地域差异,公开评论就是能拿到的数据;可以参考口碑分析方案。
更新于