首页
文章
代码笔记
资源分享
生活随笔
AI相册
工具箱
归档
友链
关于
微信公众号
欢迎关注,一起学习!
搜索
搜索内容
×
文章详情
Playwright介绍、安装、使用
Python
Playwright
Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API 功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。 因为 Playwright 是一个类似 Selenium 一样可以支持网页页面渲染的工具,再加上其强大又简洁的 API,Playwright 同时也可以作为网络爬虫的一个爬取利器。 ### 一、安装 **Python 3.7** 版本及以上,pip命令如下: `pip install playwright` 初始化操作,Playwrigth会安装 Chromium, Firefox and WebKit 浏览器并配置一些驱动: `playwright install` 只安装Chromium: `playwright install chromium` 具体的安装说明可以参考:[https://setup.scrape.center/playwright](https://setup.scrape.center/playwright) ### 二、基本使用 同步模式的例子: ```python from playwright.sync_api import sync_playwright with sync_playwright() as p: for browser_type in [p.chromium, p.firefox, p.webkit]: browser = browser_type.launch(headless=False) page = browser.new_page() page.goto('https://www.baidu.com') page.screenshot(path=f'screenshot-{browser_type.name}.png') print(page.title()) browser.close() ``` 异步模式例子: ```python import asyncio from playwright.async_api 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.new_page() await page.goto('https://www.baidu.com') await page.screenshot(path=f'screenshot-{browser_type.name}.png') print(await page.title()) await browser.close() asyncio.run(main()) ``` ### 三、代码生成 启动一个 Firefox 浏览器,将操作结果输出到 script.py 文件,命令如下: ```bash playwright codegen -o script.py -b firefox ``` 运行后会弹出了一个 Firefox 浏览器,同时右侧会输出一个脚本窗口,实时显示当前操作对应的代码。 操作完毕之后,关闭浏览器,Playwright 会生成一个 script.py 文件,内容如下: ```python from playwright.sync_api import sync_playwright def run(playwright): browser = playwright.firefox.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://www.baidu.com/") page.click("input[name=\"wd\"]") page.fill("input[name=\"wd\"]", "nba") with page.expect_navigation(): page.click("text=百度一下") context.close() browser.close() with sync_playwright() as playwright: run(playwright) ```
评论 (${comments_count})
评论
Loading...
${item.comment_time}
${item.nickname}
${c1_item.comment_time}
${c1_item.nickname}
${c1_item.reply_nickname}
${c1_item.content}
${comment_header_label}
×
邮件提醒
有回复时邮件通知我
${comment_header_label}