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

57 lines
3.6 KiB
Markdown
Raw Normal View 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}`、无间隔连跳