问答

小红书一个关键词为什么只能搜到两百来篇笔记?怎么拿到更多?

简短回答

上限在小红书那边:它对每个搜索词只返回有限的页数,所有爬虫和 API 都会碰到,okdata 也一样。想覆盖更多,就把话题拆成更细的关键词,每个词用不止一种排序去搜,再按笔记 ID 去重;每页 $0.02,20 组关键词和排序组合各翻 5 页,共 $2.00。

搜“防晒”,本以为能拿到几千篇笔记,结果工具在两百到两百二十篇左右就停了。换一个爬虫也没用,各个开源项目里大家报的都是差不多的数字。原因是小红书自己对一个搜索词只给到一定的翻页深度。它不返回的结果,任何 API 都变不出来,我们也不会假装可以:小红书停了,page.has_more 就会变成 false。

你能改变的,是一共问了多少个不同的问题。

把网撒大

用小红书笔记搜索:

  • 关键词拆细。“防晒”拆成“防晒 油皮”“儿童防晒”“防晒霜 测评”,再加品牌名、成分名。每个词都是一次新的查询,各有各的翻页深度。
  • 换排序。general、latest、popular 返回的结果有重叠,但不完全一样。
  • 分笔记类型。type=video 和 type=image 又能把结果池分开。
  • **按 id 去重。**重叠很正常,统计时数去重后的笔记,而不是行数。
  • **按时间累积。**用 sort=latest 每天跑一次,新笔记出来就收进来,跑一个月攒下的量远比一次性大爬要多。

预算

方案 调用次数 费用
1 个关键词,翻到底(约 10 页) 10 $0.20
10 个关键词 × 2 种排序 × 5 页 100 $2.00
10 个关键词按最新,每天 1 页,30 天 300 $6.00

示例

for kw in "防晒 油皮" "防晒 儿童" "防晒霜 测评"; do
  for s in general latest popular; do
    curl -s -G "https://api.okdata.online/v1/xiaohongshu/notes/search" \
      -H "Authorization: Bearer $OKDATA_API_KEY" \
      --data-urlencode "query=$kw" -d "sort=$s" -d "fields=id,title,metrics.likes" >> notes.jsonl
    echo >> notes.jsonl
  done
done

最后在表格或 notebook 里按 id 去重。

另外几点

  • 结果可能和你在 App 里看到的不一样,App 会按每个登录用户做个性化排序。
  • 每页单独扣费,所以给每个查询设个翻页上限;越往后翻,新增的笔记通常越少。
  • 搜索结果里的互动数据已经够排序用了。只对要细读的笔记调笔记详情。

有没有地方能拿到更大的数据集?

公开搜索拿不到。小红书的官方渠道,比如开放平台和蒲公英,服务的是商家和广告主,不提供按关键词批量导出。做学术研究或市场调研需要大样本的话,上面拆关键词的办法是实在的路子。关键词怎么规划,可以参考内容调研方案。

更新于