三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

小红书数据采集工具 xhs:从复制粘贴到一键取数,只差这一条命令

小红书数据采集工具 xhs:从复制粘贴到一键取数,只差这一条命令

小红书数据采集工具 xhs:从复制粘贴到一键取数,只差这一条命令

【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs

xhs是一款基于小红书 Web 端请求封装的开源 Python 库,专治"想分析数据却拿不到结构化结果"的尴尬:笔记详情、用户资料、评论层级,一条命令就能落成 Python 字典。这篇指南不背功能清单,我们从你真实遇到的痛处讲起,再带你三分钟跑通第一条数据获取命令。


为了抓一条数据,你愿意花几小时?

回想一下你上一次想做小红书内容分析:打开网页版,翻到某条爆款笔记,手动复制标题、数点赞、抄评论。一条还好,十条开始烦躁,一百条直接劝退——而你需要的数据,往往是一千条起。

更要命的是,复制下来的只是碎片:点赞数、评论数、发布时间散落在页面不同位置,拼进 Excel 又是一场噩梦。你缺的不是数据,是一条能把网页变成结构化 JSON 的通道。

更别提那些更隐蔽的诉求:想监控竞品账号更新、想统计某关键词下所有笔记的互动分布、想把评论区按热度排个序……靠人工?时间不允许。


它的答案:一行代码换一整页笔记

小红书数据采集工具 xhs干的正是这件事:把小红书的网页请求封装成一个个直觉化的方法,让"取数"从体力活变成一行代码。

note = client.get_note_by_id("笔记ID", "xsec_token")

上面这一行,返回的就是一条笔记的完整字典:标题、正文、标签、图片链接、点赞收藏评论数,全在里面。💡 记住这行的感觉,后面所有功能都是同一套逻辑。

它有 3 个让人记住的记忆点:

  • 整站接口全覆盖:不只是笔记。用户主页、搜索、首页推荐、评论区(含子评论),甚至连"关注、点赞、收藏"这类互动操作都封好了。
  • 公开数据 + 创作者后台双通道:普通页面抓不到的数据,还能从 creator 后台走通,比如发布笔记。
  • 自带一堆小工具:批量下载笔记图片、从笔记数据里提取图片/视频直链、二维码登录,开箱即用。

不需要你会逆向、不需要懂签名算法,它已经帮你把最难啃的骨头啃完了。


三分钟跑通:装好就能拿到第一批数据

别被"签名"两个字吓到,跟着走就行。

第一步,安装。Python 3.7+ 即可:

pip install xhs playwright playwright install

第二条命令是给签名服务装浏览器内核,第一次运行会下载一会儿,耐心等。

第二步,取 cookie。打开小红书网页版并登录,在开发者工具里复制 cookie 字符串,重点确认包含a1web_sessionwebId三个字段。

第三步,跑第一条数据。参考项目里的 example/basic_usage.py,把 cookie 填进XhsClient(cookie, sign=sign),然后:

note = client.get_note_by_id("6505318c000000001f03c5a6", "笔记的xsec_token") print(note["title"], note["liked_count"], note["comment_count"])

看到标题和互动数据打印出来的那一刻,你就已经打通了整条取数链路——之后的任何功能,都只是换一个方法名而已。🚀


进阶一点:批量、落盘、把签名搬去服务端

基础跑通只是开始,这 3 个能力才是它真正"能干活"的证明:

  • 整号批量抓取get_user_all_notes(用户ID)会循环翻页把某个作者的全部笔记拉下来,配合crawl_interval参数控制节奏,一个账号的历史内容几分钟内全部到手。
  • 全量评论 + 图片落盘get_note_all_comments()把一级评论和楼中楼一起捞干净;save_files_from_note_id()则能把笔记里的所有图片直接下载到本地文件夹,做素材收集极方便。
  • 签名服务化:签名的活可以交给一个独立的 Flask 服务(参考 example/basic_sign_server.py),主程序只发请求。多账号协同、长期挂机时,这个架构能显著降低签名失败率。

也就是说,它不只是"能玩",批量采集这种生产级需求,它同样接得住。


新手最常踩的四个坑

Q:为什么我老是报签名错误(SignError)?签名依赖浏览器环境,playwright版本、stealth 脚本路径、甚至网络波动都可能影响。先确认 stealth.min.js 路径正确,再给签名函数加重试逻辑,示例代码里已经写好了。

Q:cookie 填了还是 401 / 需要验证?最常见原因是缺少a1字段,或者web_session过期。a1、web_session、webId 三者缺一不可,重新登录刷新 cookie 基本能解决。

Q:抓了一会儿 IP 被封了?会触发IPBlockError。这不是 bug,是平台的正常风控。降低抓取频率、加大间隔、必要时挂代理,别拿一个 IP 死命薅。

Q:只能读数据吗?能不能发笔记、点赞、关注?能。like_notefollow_usercomment_note这些方法都在,发布笔记走 creator 通道。但请记住:操作类功能务必谨慎使用,高频互动同样有风险。


它适合谁?又不适合谁?

适合:要做内容选题分析、竞品账号监控、电商选品的个人研究者和中小团队;有一定 Python 基础、想快速拿到结构化数据的开发者。它对"数据量中等、频率可控"的使用场景非常顺手。

不适合:完全零代码、想要"点一下导出 Excel"的非技术用户——它毕竟是个 Python 库;也不适合打算大规模、高频率抓取来做商业变现的玩家——技术上有风险,合规上更有风险。

工具本身没有立场,怎么用、用多狠,是你自己的选择。


现在就动手:给今晚的自己一个交代

你不需要记住这篇文章的全部内容,只需要带走一个判断:下次再想分析小红书数据时,别打开浏览器手动复制了,先想起有个叫 xhs 的工具。

接下来的行动路径:

  1. pip install xhs,装好环境;
  2. 打开 docs/basic.rst 走一遍快速入门;
  3. 跑通 example/basic_usage.py,拿到第一份数据;
  4. 想抓主页、评论、用户信息,翻 docs/crawl.rst,全是现成的方法名;
  5. 想要最新源码,可以 clone:git clone https://gitcode.com/gh_mirrors/xh/xhs

数据不会自己跑到你手里,但它会。从今晚的第一条命令开始。

【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表