系统要求

必须要符合以下要求,否则不知道会出现什么问题:

  • Python 3.8 or higher.
  • Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL).
  • MacOS 12 Monterey or MacOS 13 Ventura.
  • Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04.

安装

使用pip安装playwright

pip  install  playwright

安装必须的浏览器,可以指定只安装[firefox/ chromium /webkit]其中的一种:

playwright install 

运行

headless模式

在Linux上,默认情况下,Playwright将在headless模式下运行。要在非headless模式下运行,请将headless=False传递给launch()方法。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
# Works across chromium, firefox and webkit
browser = p.chromium.launch()

headless遇到的问题

某些网站无法正常访问,经过分析发现无头模式会有对应的请求标识。我们可以通过下面的方法来去除这些标识。

  1. 在context中重新设置header,不同的网站安全措施不一样,下面只是一个示例。
self.context.set_extra_http_headers(
{"sec-ch-ua": '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/119.0.0.0 Safari/537.36",
"Accept-Language": "zh-CN,zh;q=0.9"
})
  1. 使用route功能修改请求
# Delete header
def handle_route(route):
headers = route.request.headers
del headers["x-secret"]
route.continue_(headers=headers)
page.route("**/*", handle_route)

# Continue requests as POST.
page.route("**/*", lambda route: route.continue_(method="POST"))

非headless模式

在Linux代理上,非headless执行需要安装Xvfb。要使用Xvfb以头模式运行浏览器,请在命令之前添加xvfb-run

xvfb-run python test.py