Files
MediaCrawler/media_platform/douyin
butubb 42f2209534
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s
fix(douyin): 两个让抖音采集根本跑不起来的上游缺陷
用户建了个抖音博主任务,两次都是 exit 1、产物目录空空。查下来是上游两处缺陷,
与我们那层监控无关 —— 但它们在别的网络上未必复现,所以社区里没人报。

1) media_platform/douyin/core.py:101 —— 首页 goto 永远等不到 load

    await self.context_page.goto(self.index_url)   # 默认 wait_until="load"

   抖音首页的 load 事件不会触发(有长连接/埋点类请求一直挂着)。实测同一台 Chrome、
   同一个地址:domcontentloaded 0.7 秒返回,load 等满 90 秒仍超时。后果是整个采集
   一步没走就崩,退出码 1,看起来像「抖音不能用」。改成显式 domcontentloaded ——
   上游的贴吧和知乎本来就是这么写的,抖音这个页面只是恰好属于「永远不 load」那类。

2) media_platform/douyin/login.py:266 —— 注入 cookie 后页面是陈旧的

   login_by_cookies 把 cookie 塞进 context,但页面是在这之前加载的;SPA 只在加载时
   读一次登录态,localStorage.HasUserLogin 还停在"未登录",紧接着 check_login_state
   会对着这个陈旧值轮询到超时(600×1 秒=十分钟)再 sys.exit()。下一轮才正常,因为
   那时 cookie 已在 profile 里 —— 表现是"第一次白等十分钟、第二次才行",很容易被当
   偶发。修复:注入后 reload(domcontentloaded)。

   与 xhs 那个 __INITIAL_STATE__ 快照问题是同一类:页面状态是加载那一刻的快照。
   本仓库扫码登录与运营模块也各自踩过。

UPSTREAM.md 的第二类「上游 bug 修复」表补上这两条与成因说明(原来只有两条 xhs 的)。

验证:在服务器容器里手工复现,改完后真实采到数据 ——
  Parsed sec_user_id: MS4wLjABAAAArLubjxXEcLeiqehxgk4il4AHMu0hXu6_qlmD8z5WmMs
  get_all_user_aweme_posts ... video len : 1
  douyin aweme id:7690458980574358513, title:中秋哪儿都堵...
产物落在 douyin/jsonl/ 下,顺带把适配器里「平台 id 是 dy、目录是 douyin」的映射
用真实输出证实了。
2026-10-10 15:29:02 +08:00
..
2025-11-18 12:24:02 +08:00