问答

通过第三方接口拿社媒数据,还要管平台的用户协议和 robots.txt 吗?

简短回答

仍然要管,只是方式不同。用 okdata 这样的接口,你不登录平台、不点同意用户协议、也不自己爬页面,所以封号和爬虫规则不再是你每天要处理的事(抖音搜索每次 $0.02)。没变的是:你保存和发布的内容仍受个人信息和著作权法律约束,平台也可能对损害它的用途提出异议。以上为一般信息,不构成法律意见。

常有人觉得,数据是接口服务商采的,出了问题也是服务商的事。没这么简单。接口改变的是谁在采集,数据本身是什么、你能拿它做什么,都没有变。本页是一般信息,不构成法律意见。

用接口后,有哪些变了

  • 不注册账号,不点同意。 为了这项任务,你不需要在抖音或微博注册,不需要接受它们的用户协议,也不向它们的网站发请求。反爬识别、封号这些问题转到了服务商那边。
  • robots.txt 不是写给你的。 Robots 排除协议告诉爬虫网站希望它们跳过哪些路径。你没有在爬,但网站表达出的意愿,仍然是你评估某种用途观感时值得参考的背景。

有哪些没变

  • 个人信息法律。 一旦你把帖子和用户名存下来,按《个人信息保护法》、GDPR 或当地法律,处理个人信息的就是你。
  • 著作权。 帖子文字、图片、视频属于作者。做分析是一回事,转载发布是另一回事。
  • 平台的利益。 国内法院审理过平台就第三方使用其数据提起的不正当竞争诉讼,比如新浪微博诉脉脉案。替代平台服务、或者损害平台的用途,容易引来这类纠纷。
  • 服务商自己的条款。 okdata 的服务条款还是草稿,但大纲已经公开:只限公开数据;不得违反你所在地的法律或数据涉及者的权利;不得把原始数据转卖成竞品 API。

存得比采的少

很多问题用汇总数就能回答,汇总数里没有任何个人信息。统计某个产品每天在微博上被提到多少次,只需要 ID 和时间:

import collections, os, requests

URL = "https://api.okdata.online/v1/weibo/posts/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

per_day, cursor = collections.Counter(), None
for _ in range(10):
    params = {"query": "新品发布", "sort": "latest", "fields": "id,published_at",
              **({"cursor": cursor} if cursor else {})}
    body = requests.get(URL, headers=H, params=params, timeout=60).json()
    per_day.update(p["published_at"][:10] for p in body["data"]["items"])
    if not body["page"]["has_more"]:
        break
    cursor = body["page"]["next_cursor"]
print(sorted(per_day.items()))

该问数据服务商的三个问题

  1. 你们只采公开数据、不用登录态吗?
  2. 我拉取的数据你们会存吗,存多久?
  3. 数据在哪里处理?

这里的抖音视频搜索和微博搜索只返回公开数据,在你调用时从平台读取;如果走了短期缓存,meta.cached 会标明。更完整的法律背景见抓取社交媒体上的公开数据合法吗,以汇总为先的分析做法见趋势研究。

更新于