问答
写论文需要社媒数据,学生大概要准备多少预算?
简短回答
比多数同学想的少。一份常见的论文语料,5000 条微博加 2 万条 B站评论,在 okdata 上是 $3.00:微博搜索每次 $0.002、约 10 条,B站评论每次 $0.002、约 20 条。先用新 key 自带的试用额度做小样本,再按正式采集加一次补采来做预算。
研究网络舆论的论文,一般需要几千条帖子,再加 1 万到 5 万条评论。按页计费的话,这在课题经费里是很小的一笔,往往比旁边的问卷或转录费用还低。
三四种常见设计
| 研究设计 | 接口 | 调用次数 | 费用 |
|---|---|---|---|
| 某话题 5000 条微博 | 微博搜索 | 500 | $1.00 |
| 100 条 B站视频下的 2 万条评论 | B站视频评论 | 1000 | $2.00 |
| 1 万条抖音评论 | 抖音视频评论 | 500 | $1.00 |
| 跨平台对比章节再加 1 万条 TikTok 评论 | TikTok 视频评论 | 200 | $0.40 |
预算建议分三段:小样本试采、正式采集、再留一次补采,以防导师让你加关键词或者延长时间段。每个新 key 自带 $0.10 试用额度,够在便宜的接口上跑一个小样本,先确认数据能不能回答你的研究问题。
自带记录的采集脚本
import csv, os, requests
URL = "https://api.okdata.online/v1/weibo/posts/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def collect(query, pages, path):
cursor = None
with open(path, "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["id", "published_at", "text", "likes", "reposts", "comments", "fetched_at"])
for _ in range(pages):
params = {"query": query, "sort": "latest", **({"cursor": cursor} if cursor else {})}
body = requests.get(URL, headers=H, params=params, timeout=60).json()
if body["code"] != "ok":
raise RuntimeError(f"{body['code']}: {body['message']}")
for p in body["data"]["items"]:
m = p["metrics"]
w.writerow([p["id"], p["published_at"], p["text"], m["likes"], m["reposts"], m["comments"], body["meta"]["fetched_at"]])
if not body["page"]["has_more"]:
break
cursor = body["page"]["next_cursor"]
方法部分要写清楚的
- 记下具体的检索词、排序方式、采集日期,以及每一页的
fetched_at时间。平台搜索结果会变,采集时间本身就是数据的一部分。 - 说明只纳入了采集时公开可见的内容,已删除或设为私密的内容不在样本里。
- 分析前删除或哈希处理用户名,原始文件妥善保存;学校要求伦理审查的,提前申请。公开帖子里同样有个人信息。
更便宜或更正式的路
如果你所在的学校符合条件,TikTok 的 Research API 申请并通过项目审核后免费,只做 TikTok 的论文用它更有说服力。现成的公开数据集不花钱,值得先找一找。开源爬虫也免费,前提是你有时间一直维护它。从评论里归纳主题的做法,可以参考口碑研究。
更新于