如何在 Jupyter 笔记本中使用 Playwright 库而不是使用常规 .py 脚本(在 Windows 上)

Noa*_*ela 6 python webdriver python-3.x playwright playwright-python

我想使用自动浏览器并使用 jupyter 笔记本单元而不是使用 .py 脚本执行我的步骤。这与名为 selenium 的浏览器自动化库配合得很好。

它不适用于名为 Playwright 的库。事实上它根本不起作用。我尝试了他们在手册中提供的每一行代码。jupyter 笔记本上什么都不起作用。只要将相同的代码复制粘贴到某个 .py 文件中并执行它,一切都可以在我的机器上正常运行。我正在谈论的各种示例可以在这里找到: https: //playwright.dev/python/docs/intro

我真的不明白为什么我无法让它在 jupyter 笔记本中工作,特别是如果它在几乎每个 .py 文件中都能正常工作的话。

编辑:显然它可以在 Mac 上运行,但我使用 Windows

l m*_*zhi 10

下面的代码适用于 MacOS 和 Linux。


如https://github.com/microsoft/playwright-python/issues/480中所述

Jupyter Notebook 使用 asyncio 事件循环,因此您应该使用 async api。

from playwright.async_api import async_playwright

playwright = await async_playwright().start()
browser = await playwright.chromium.launch(headless = False)
page = await browser.new_page()

await page.goto("http://whatsmyuseragent.org/")

# await page.screenshot(path="example.png")
# await browser.close()
# await playwright.stop()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


如果你使用syncAPI​​,它会抛出这样的错误:

from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()

'''
Error: It looks like you are using Playwright Sync API inside the asyncio loop.
Please use the Async API instead.
'''
Run Code Online (Sandbox Code Playgroud)

  • 感谢费里斯的更新。看起来您使用的是 Mac,这可能会解释它,但在 Windows(以及根据评论的 WSL)上,我知道它仍然无法工作。我现在 AFK,但我很快会再次仔细检查您的解决方案 (2认同)
  • 我使用 Windows,这段代码给我抛出了一个错误。但如果至少能在 mac 上运行那就太好了 (2认同)