Playwright 爬虫教程:适用于初学者的综合指南
2023-11-24 01:51:07
Playwright 入门
什么是 Playwright?
Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。Playwright 的优势在于它可以同时支持多种浏览器,包括 Chrome、Firefox、Edge 和 Safari,并且它提供了丰富的 API,可以轻松实现各种复杂的自动化任务。
Playwright 安装
Playwright 的安装非常简单,你只需要在命令行中输入以下命令:
pip install playwright
安装完成后,你就可以使用 Playwright 了。
Playwright 基本用法
创建浏览器实例
要使用 Playwright,你需要先创建一个浏览器实例。你可以使用以下代码创建 Chrome 浏览器的实例:
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
打开网页
创建浏览器实例后,你可以使用 page.goto()
方法打开一个网页。例如,以下代码将打开百度首页:
page = await browser.new_page()
await page.goto("https://www.baidu.com")
获取页面内容
打开网页后,你可以使用 page.content()
方法获取页面的 HTML 内容。例如,以下代码将获取百度首页的 HTML 内容:
html = await page.content()
执行 JavaScript 代码
Playwright 还允许你执行 JavaScript 代码。你可以使用 page.evaluate()
方法执行 JavaScript 代码。例如,以下代码将在百度首页上搜索“Playwright”:
await page.evaluate("document.querySelector('input[name=wd]').value = 'Playwright'")
await page.evaluate("document.querySelector('input[type=submit]').click()")
等待元素加载
有时,你需要等待页面上的某个元素加载完成后再继续执行后续操作。你可以使用 page.wait_for_selector()
方法来等待元素加载。例如,以下代码将等待百度搜索结果页上的第一个搜索结果加载完成后再继续执行后续操作:
await page.wait_for_selector("a[href*='https://playwright.dev/']")
截图
Playwright 还允许你对页面进行截图。你可以使用 page.screenshot()
方法对页面进行截图。例如,以下代码将对百度首页进行截图并保存为 screenshot.png
文件:
await page.screenshot(path="screenshot.png")
Playwright 进阶用法
使用 Playwright 进行网络爬虫
Playwright 可以很容易地用于进行网络爬虫。你可以使用 Playwright 来抓取网页上的数据,然后将其保存到数据库或文件中。例如,以下代码将抓取百度搜索结果页上的所有搜索结果标题并将其保存到文件中:
with open("search_results.txt", "w") as f:
for element in page.querySelectorAll("h3.result-title"):
f.write(element.text_content() + "\n")
使用 Playwright 进行自动化测试
Playwright 也可以用于进行自动化测试。你可以使用 Playwright 来测试 Web 应用程序的功能,并确保它们按预期工作。例如,以下代码将测试百度搜索结果页上的第一个搜索结果是否指向 Playwright 的官方网站:
first_result = page.querySelector("a[href*='https://playwright.dev/']")
await first_result.click()
await page.wait_for_url("https://playwright.dev/")
结语
Playwright 是一款功能强大、易于使用的自动化工具,它可以用于各种各样的任务,包括爬虫、自动化测试等。本教程只是简单介绍了 Playwright 的基本用法,更多高级用法请参考 Playwright 的官方文档。