大家好,我是 V保持哥。
玩过爬虫的朋友对 Selenium 一定不陌生,它是自动化测试的神器,也是爬虫遇到瓶颈时的“救火队员”。虽然 Selenium 文档完备,但学习成本依然存在,对纯小白来说有一定门槛。
最近,微软开源了一个名为 playwright-python 的项目,简直“碉堡了”!它不仅是一个强大的自动化库,更厉害的是它支持录制功能——连代码都不用写,手动操作一遍,它就能自动生成 Python 脚本。
下面带大家一探究竟。

  1. 什么是 Playwright?
    Playwright 是一个强大的 Python 库,仅用一个 API 即可自动执行 Chromium、Firefox、WebKit 等主流浏览器的自动化操作。
    🌍 跨浏览器:支持 Chromium, Firefox, WebKit。
    💻 跨平台:支持 Linux, Mac, Windows。
    ⚡️ 极速可靠:提供无头模式(Headless)和有头模式,运行速度快且稳定。
  2. 快速上手指南
    🛠️ 安装步骤
    Playwright 的安装非常简单,只需两步:
# 安装playwright库
pip install playwright

# 安装浏览器驱动文件(安装过程稍微有点慢)
python -m playwright install

1. 安装 Playwright 库 (需要 Python 3.7+)

pip install playwright

2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)

注意:此步骤下载文件较大,过程可能稍慢

python -m playwright install
🎥 核心功能:代码录制 (Codegen)
这是 Playwright 最“黑科技”的功能。你不需要手写代码,只需像平时一样操作浏览器,它会自动将你的点击、输入转化为代码。
录制命令:

# 基础命令
python -m playwright codegen

# 指定目标语言、输出文件和浏览器,并打开指定网址
python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com

参数说明:
-o :将录制的脚本保存到指定文件。
–target :指定生成脚本的语言(javascript, python, python-async, csharp),默认为 Python。
-b :指定浏览器驱动(chromium, firefox, webkit)。
效果演示:
执行命令后会自动打开浏览器,你在浏览器上的所有操作(点击、输入、跳转)都会实时翻译成代码。结束后自动关闭浏览器并保存脚本。
自动生成的代码示例(百度搜索京东):

from playwright import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.newContext()
    
    # 打开新页面
    page = context.newPage()
    page.goto("https://www.baidu.com/")
    
    # 模拟点击和输入
    page.click("input[name=\"wd\"]")
    page.fill("input[name=\"wd\"]", "jingdong")
    page.click("text=\"京东\"")
    
    # 处理弹窗跳转
    with page.expect_navigation():
        with page.expect_popup() as popup_info:
            page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")
        page1 = popup_info.value
        
    # 关闭
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)
  1. 进阶:API 编程模式
    除了录制,Playwright 也提供了非常优雅的同步和异步 API。
    ⚙️ 同步模式 (Sync)
    适合简单的脚本编写,逻辑直观。
    示例:依次打开三个浏览器,访问百度并截图。
from playwright import sync_playwright

with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
        browser = browser_type.launch()
        page = browser.newPage()
        page.goto('https://baidu.com/')
        page.screenshot(path=f'example-{browser_type.name}.png')
        browser.close()

⚡️ 异步模式 (Async)
结合 asyncio,可大幅提升效率,同时控制多个浏览器。

import asyncio
from playwright import async_playwright

async def main():
    async with async_playwright() as p:
        for browser_type in [p.chromium, p.firefox, p.webkit]:
            browser = await browser_type.launch()
            page = await browser.newPage()
            await page.goto('http://baidu.com/')
            await page.screenshot(path=f'example-{browser_type.name}.png')
            await browser.close()

asyncio.get_event_loop().run_until_complete(main())

📱 移动端模拟
Playwright 还能模拟移动端设备,包括地理位置权限等。
示例:模拟 iPhone 11 Pro 访问 Google 地图并定位。

from playwright import sync_playwright

with sync_playwright() as p:
    # 加载 iPhone 11 Pro 配置
    iphone_11 = p.devices['iPhone 11 Pro']
    
    browser = p.webkit.launch(headless=False)
    context = browser.newContext(
        **iphone_11,
        locale='en-US',
        geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
        permissions=['geolocation']
    )
    
    page = context.newPage()
    page.goto('https://maps.google.com')
    page.click('text="Your location"')
    page.screenshot(path='colosseum-iphone.png')
    browser.close()
  1. 总结
    Playwright 相比 Selenium 等传统工具,优势非常明显:

表格
特性	Playwright	Selenium
录制功能	✅ 强大,自动生成代码	❌ 需配合 IDE 插件
速度	⚡️ 极快	🐢 相对较慢
移动端模拟	✅ 原生支持	❌ 需配置 Appium
多语言支持	Python, JS, C#, Java	支持所有主流语言

不足之处:
目前生态和中文文档还在完善中,相比 Selenium 庞大的社区,Playwright 的中文教程相对较少。但随着微软的推广,未来可期。
项目地址:云效- git@codeup.aliyun.com:691d382079c766a0475d787a/PyCharmMiscProject.git
官方文档: Playwright Python Docs
欢迎点赞、在看、分享!

Logo

一站式 AI 云服务平台

更多推荐