一、Playwright 支持四种等待模式:
- commit: 服务器输出数据,建立连接后就返回(页面可能还没有东西)
- domcontentloaded: HTML 骨架加载完成,此时可以进行 DOM 操作
- load: 页面所有东西(包括大图片、外部资源)全部下完
- networkidle: 彻底加载完,包括异步请求
二、为什么要用 domcontentloaded:
- 抢时间: 等待很多不需要的图片,需要耗费很多时间,但想要的数据早在 HTML 骨架里,不需要等待图片。
- 避开无效干扰: 很多反爬虫插件或广告是在页面 load 之后才执行的。提前介入(DOM 加载完就操作)有时能绕过一些动态干扰。
三、总结:
-
如果网页数据在 HTML 源码里:用 domcontentloaded。
-
如果网页数据是靠 JS 后来渲染生成的:建议用 networkidle。