Files
mcn-short-video/project/短视频脚本创作/V1.0/subskill/mcn-dou-analysis/references/铁律避坑规则/视频列表获取执行避坑.md
T

3.6 KiB
Raw Blame History

视频列表获取执行避坑(功能二)

与 浏览器搜索抖音账号操作规范.md 配合使用;本文记录功能二(获取视频列表)执行中踩过的坑与纠正。


一、数据提取方法优先级(2026-08-31 纠正)

坑 1:逐条打开视频页抓字段 = 爬虫特征 + 低效(严重)

现象:俊希全流程测试 TC-04 时,发现列表页逐卡片 awemeInfo 拿不到 createTime(undefined 被 JSON.stringify 省略),于是改成逐条 goto_url("https://www.douyin.com/video/{id}") 打开视频页抓「发布时间」文本。结果:15 次连续跳转明显是爬虫特征,且耗时极长、方法退化。

根因:08-26 旧梦留声机已验证的 defaultDataList 方法(一次拿全含 createTime)没有固化到技能文件,本次执行时凭记忆退化。

正确方法(实测通过):

数据 来源 说明
createTime / stats / desc 列表组件 Fiber defaultDataList(首选) 从 #root 的 __reactContainer$/__reactFiber$ 键沿 child/sibling 链遍历,找 memoizedProps.defaultDataList;136 条全含 createTime
duration(毫秒) 卡片 Fiber awemeInfo(兜底) awemeInfo.video.duration;defaultDataList 里可能为 null,两者按 awemeId 合并
其余统计字段 两来源均可 驼峰式:diggCount/commentCount/shareCount/collectCount/playCount,非 snake_case

执行要点:

  1. 主页滚动加载(.route-sc 容器,随机节奏,≥60 条或加载不出即停)
  2. 一次 Fiber 提取全量 → 合并 → 生成 13 列 Excel(发布时间列 = createTime 转 YYYY-MM-DD)
  3. 再走 excel_tool.py select-top6 筛选(依赖「发布时间」列)

坑 2:访问账号主页直接构造地址(严重)

现象:直接 goto_url("https://www.douyin.com/user/{sec_uid}") 跳转主页,页面加载异常(标题缺昵称、无视频链接、无 .route-sc 容器);且真实链接带完整参数后缀(如 ...brjmRxiM9i),构造缺后缀地址访问异常。

正确方法:

  1. 先 goto_url("https://www.douyin.com/search/{账号ID}?type=user") 走搜索页
  2. 搜索结果中定位目标用户卡片(用 innerText 匹配 抖音号/粉丝数 特征,如 JJX0827+281.9万)
  3. 模拟点击进入主页:CDP Input.dispatchMouseEvent(mouseMoved → mousePressed → mouseReleased)或 click_at_xy;点击后可能新开标签页(target=_blank),从 Target.getTargets 找新主页标签页继续操作
  4. 禁止直接构造 /user/{sec_uid} 地址跳转

二、数据校验速查表

检查项 标准 异常处理
发布时间列填充率 100%(defaultDataList 全含 createTime) 若大量为空 → 检查是否用了逐卡片 awemeInfo 而非 defaultDataList
时长填充率 100%(卡片 awemeInfo.duration 毫秒) 合并逻辑遗漏 → 按 awemeId 补合并
视频条数 ≥60 条(SKILL.md 唯一权威参数) 滚动加载未触发 → 检查 .route-sc 容器定位
统计字段 驼峰式(diggCount 等) 若全 0 → 检查字段名是否误用 snake_case

三、浏览器行为准则速记

  • ✅ 标签页复用:已有抖音标签页直接 goto_url 导航,不 new_tab
  • ✅ 访问主页走搜索 → 模拟点击;不构造直达地址
  • ✅ 数据提取一次 Fiber 拿全;不逐条开视频页
  • ✅ 适度访问:随机停留/滚动节奏,不连续快速跳转
  • ❌ 禁止:new_tab 堆积、直达 /user/{sec_uid}、逐条 /video/{id}、无间隔连跳