微软开源神器:Playwright —— 真正的 Python 自动化利器(免写代码版)
- 1. 安装 Playwright 库 (需要 Python 3.7+)
- 2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)
- 注意:此步骤下载文件较大,过程可能稍慢
大家好,我是 V保持哥。
玩过爬虫的朋友对 Selenium 一定不陌生,它是自动化测试的神器,也是爬虫遇到瓶颈时的“救火队员”。虽然 Selenium 文档完备,但学习成本依然存在,对纯小白来说有一定门槛。
最近,微软开源了一个名为 playwright-python 的项目,简直“碉堡了”!它不仅是一个强大的自动化库,更厉害的是它支持录制功能——连代码都不用写,手动操作一遍,它就能自动生成 Python 脚本。
下面带大家一探究竟。
- 什么是 Playwright?
Playwright 是一个强大的 Python 库,仅用一个 API 即可自动执行 Chromium、Firefox、WebKit 等主流浏览器的自动化操作。
🌍 跨浏览器:支持 Chromium, Firefox, WebKit。
💻 跨平台:支持 Linux, Mac, Windows。
⚡️ 极速可靠:提供无头模式(Headless)和有头模式,运行速度快且稳定。 - 快速上手指南
🛠️ 安装步骤
Playwright 的安装非常简单,只需两步:
# 安装playwright库pipinstallplaywright# 安装浏览器驱动文件(安装过程稍微有点慢)python-mplaywrightinstall1. 安装 Playwright 库 (需要 Python 3.7+)
pip install playwright
2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)
注意:此步骤下载文件较大,过程可能稍慢
python -m playwright install
🎥 核心功能:代码录制 (Codegen)
这是 Playwright 最“黑科技”的功能。你不需要手写代码,只需像平时一样操作浏览器,它会自动将你的点击、输入转化为代码。
录制命令:
# 基础命令python-mplaywright codegen# 指定目标语言、输出文件和浏览器,并打开指定网址python-mplaywright codegen--targetpython-o'my.py'-bchromium https://www.baidu.com参数说明:
-o :将录制的脚本保存到指定文件。
–target :指定生成脚本的语言(javascript, python, python-async, csharp),默认为 Python。
-b :指定浏览器驱动(chromium, firefox, webkit)。
效果演示:
执行命令后会自动打开浏览器,你在浏览器上的所有操作(点击、输入、跳转)都会实时翻译成代码。结束后自动关闭浏览器并保存脚本。
自动生成的代码示例(百度搜索京东):
fromplaywrightimportsync_playwrightdefrun(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=\"京东\"")# 处理弹窗跳转withpage.expect_navigation():withpage.expect_popup()aspopup_info:page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")page1=popup_info.value# 关闭context.close()browser.close()withsync_playwright()asplaywright:run(playwright)- 进阶:API 编程模式
除了录制,Playwright 也提供了非常优雅的同步和异步 API。
⚙️ 同步模式 (Sync)
适合简单的脚本编写,逻辑直观。
示例:依次打开三个浏览器,访问百度并截图。
fromplaywrightimportsync_playwrightwithsync_playwright()asp:forbrowser_typein[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,可大幅提升效率,同时控制多个浏览器。
importasynciofromplaywrightimportasync_playwrightasyncdefmain():asyncwithasync_playwright()asp:forbrowser_typein[p.chromium,p.firefox,p.webkit]:browser=awaitbrowser_type.launch()page=awaitbrowser.newPage()awaitpage.goto('http://baidu.com/')awaitpage.screenshot(path=f'example-{browser_type.name}.png')awaitbrowser.close()asyncio.get_event_loop().run_until_complete(main())📱 移动端模拟
Playwright 还能模拟移动端设备,包括地理位置权限等。
示例:模拟 iPhone 11 Pro 访问 Google 地图并定位。
fromplaywrightimportsync_playwrightwithsync_playwright()asp:# 加载 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()- 总结
Playwright 相比 Selenium 等传统工具,优势非常明显:
不足之处:
目前生态和中文文档还在完善中,相比 Selenium 庞大的社区,Playwright 的中文教程相对较少。但随着微软的推广,未来可期。
项目地址:云效- git@codeup.aliyun.com:691d382079c766a0475d787a/PyCharmMiscProject.git
官方文档: Playwright Python Docs
欢迎点赞、在看、分享!