← 返回文章列表

用 Playwright 写爬虫:对抗反爬与动态渲染的实战指南

发布于 2026-02-03

很多网站的内容早就不再是“请求一个 HTML 就完事”了:页面是前端框架渲染的、数据来自异步接口、列表需要滚动才加载,甚至还会针对无头浏览器、异常指纹、频繁访问做风控。这时用 requests + bs4 往往抓不到关键内容;而传统的 Selenium 又常常因为等待、定位、稳定性和调试成本而让人崩溃。

Playwright 是微软开源的浏览器自动化框架,它能像真实用户一样驱动 Chromium / Firefox / WebKit 浏览器:执行 JavaScript、等待页面渲染、处理登录与 Cookie、模拟滚动/点击、拦截网络请求、截图与录制 trace 复现问题。对爬虫来说,Playwright 的价值不只是“能打开网页”,而是能让你在动态渲染、复杂交互和一定程度的反爬环境下,依然稳定地拿到数据。

这篇文章会围绕“用 Playwright 做采集”展开,从最小可用脚本开始,逐步讲清楚:如何选择抓 DOM 还是抓接口、如何处理无限滚动与分页、如何保存登录态与复用会话、如何降低被封风险、以及如何把脚本整理成可维护的采集工程。目标是让你读完就能把代码套到自己的目标站点上。

环境部署与安装(Python 版本)

下面以 Windows/macOS/Linux 通用的方式介绍部署。建议使用虚拟环境,避免污染系统 Python。

1)创建虚拟环境并安装 Playwright

要求:Python 3.9+(越新越好)

# 进入你的项目目录
mkdir pw-crawler && cd pw-crawler

# 创建并激活虚拟环境(Windows PowerShell)
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# macOS / Linux
# python3 -m venv .venv
# source .venv/bin/activate

# 安装 Playwright
pip install -U playwright

2)安装浏览器内核(必须)

# 安装所有内核(Chromium / Firefox / WebKit)
playwright install
# 只安装 Chromium(爬虫最常用,更轻量)
playwright install chromium

3)验证安装是否成功

新建 smoke_test.py

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com", wait_until="domcontentloaded")
    print(page.title())
    browser.close()

运行:

python smoke_test.py

正常情况(示例):终端会打印出页面标题,然后程序退出。

Example Domain

4)调试与运行模式

# 调试阶段:有头模式(能看到浏览器)+ 慢动作
browser = p.chromium.launch(headless=False, slow_mo=200)
# 正式跑采集:无头模式(服务器/CI 友好)
browser = p.chromium.launch(headless=True)
# 可选:打开 Playwright Inspector(适合调试定位/等待)
page = browser.new_page()
page.goto("https://example.com")
page.pause()

Playwright 爬虫常用使用指南(速查表|Python)

下面示例默认使用 playwright.sync_api(同步写法更适合入门与脚本采集)。
若你用异步,把 sync_playwright() 换成 async_playwright(),并在调用前加 await 即可。


术语约定:


1)基础对象怎么来:sync_playwright() / browser / context / page


2)打开网页与页面状态:page.goto() / wait_until


3)核心:locator() 是什么?为什么它是爬虫/自动化的关键


4)抓数据:文本 / 属性 / HTML


5)交互(爬虫也常用):点击 / 输入 / 键盘鼠标


6)等待(避免 sleep):等元素 / 等 URL / 等响应


7)网络相关:监听 / 拦截(抓接口、提速)


8)会话与登录态:storage_state


9)调试与排错:截图 / 保存 HTML / Trace


10)常见“关系图”(帮新手建立心智模型)

官方文档链接:Playwright Docs

动画演示链接(个人制作):Playwright Demo

提示:鼠标移动会产生拖尾并影响周围粒子;按住 Alt 可切换吸引(Alt)/排斥(默认)效果。