如何利用Python爬虫抓取知乎等平台的评论区数据_处理分页偏移量offset参数

秋雪君_3502

秋雪君_3502

2026-05-08

1133人浏览

原创

知乎评论接口的offset参数是游标而非页码,须用上一页最后评论id字符串作下一次offset,首次请求应省略或传空字符串;需携带有效cookie、x-zse-86签名及合规user-agent,否则易触发反爬限制。

如何利用python爬虫抓取知乎等平台的评论区数据_处理分页偏移量offset参数

知乎评论接口的 offset 参数不是页码,而是起始评论ID

直接把 offset=20 理解成“第20条开始”是错的——知乎评论列表接口(如 /api/v4/questions/{qid}/answers 或 /api/v4/answers/{aid}/comments)实际用的是游标式分页(cursor-based),offset 字段名具有误导性,它本质是上一页最后一条评论的 id 值(字符串),而非整数偏移量。

常见错误现象:传入 offset=40 后返回空数组或重复数据;手动递增 offset 数值导致请求 400 或 401。

  • 真实请求中必须携带上一页响应里的 data[-1]["id"] 作为下一次的 offset 参数
  • 首次请求时 offset 应省略,或设为空字符串 ""(部分接口要求传 "0",需实测)
  • 注意响应里还可能带 is_end: true 字段,比靠 data 长度判断更可靠

知乎反爬对 comment 接口的三重限制

即使参数正确,也大概率被拦截:IP限频、Cookie时效性、User-Agent指纹校验缺一不可。

  • 必须复用登录态 Cookie(尤其是 z_c0 和 _xsrf),且有效期通常仅几小时;自动刷新需模拟登录流程或提取浏览器 localStorage 中的 token
  • 请求头必须包含 X-Zse-86(新版加密签名)和 X-Zse-96(旧版已逐步弃用),缺失任一即 403;生成逻辑依赖时间戳、URL、设备 ID,无法硬编码
  • 高频请求(如 time.sleep(1.5–3),并用 requests.Session() 复用连接

绕过 offset 限制的替代方案:用 after 参数 + time 排序

部分评论接口(如回答下的评论流)支持 after + order_by 组合,比依赖 offset 更稳定。

361SCAN security check your skill python scripts
361SCAN security check your skill python scripts

扫描并分析已安装技能,用于查看指定技能目录的名称、描述和详情,或列出所有已安装的技能。

下载

例如请求:

GET /api/v4/answers/123456789/comments?limit=20&after=2024-05-12T08:12:34.123Z&order_by=created_time
  • after 是 ISO 时间字符串,表示“获取此时间之后的评论”,可规避 ID 不连续问题
  • 需先请求一次无 after 的初始页,取 data[0]["created_time"] 作为下一轮起点
  • 注意时区:知乎后端用 UTC,但前端显示为本地时间,解析 created_time 时务必用 datetime.fromisoformat(...).astimezone(timezone.utc)

其他平台(如小红书、B站)不适用 offset 模式

别套用知乎经验到别的平台——小红书评论接口用 cursor(base64 编码的游标字符串),B站用 next(纯数字页码),豆瓣甚至用 start/count 的传统 offset-limit。

关键差异点:

  • 小红书的 cursor 必须原样传递,解码后是 JSON,含时间戳和 ID,但修改会导致签名失效
  • B站 next 可递增,但超过总页数会返回空,且需配合 ps(每页数量)使用
  • 所有平台的评论接口都禁用未登录请求,且返回字段结构差异大,不能共用解析逻辑

真正麻烦的从来不是 offset 怎么填,而是每次换平台都要重抓请求链、重逆向签名、重处理字段映射。留个心眼:先抓包看响应结构,再写代码,别先写通用框架。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

知乎
知乎

知乎app是广大用户朋友们常用的问答工具,集搜索、问答、社交等服务功能为一体,超多内容随你阅读观看,让你发现更多精彩。有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

python 知乎 爬虫

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1751

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4524

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1729

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

26697

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3227

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3247

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1183

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2523

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习