以下是使用Playwright编写的允许JS并获取执行结果的代码,兼容asyncio:

import asyncio
from playwright.async_api import async_playwright, Playwright


async def run_js(script: str) -> str:
    async with async_playwright() as p:
        browser: Playwright = await p.chromium.launch()
        page = await browser.new_page()
        result = await page.evaluate(script)
        await browser.close()
        return result


async def main():
    script = "(() => { return 'Hello, World!'; })();"
    result = await run_js(script)
    print(result)


loop = asyncio.get_event_loop()
loop.run_until_complete(main())

这段代码定义了一个run_js函数,该函数使用Playwright启动一个Chromium浏览器实例,并在新页面中执行传递的JavaScript代码。然后,该函数关闭浏览器并返回执行结果。

在主函数中,我们定义了要执行的JavaScript代码,并将其传递给run_js函数。然后,我们打印返回的结果。

该代码使用asyncio库来运行异步代码。可以使用asyncio.run函数来简化代码,并自动创建和关闭事件循环:

import asyncio
from playwright.async_api import async_playwright, Playwright


async def run_js(script: str) -> str:
    async with async_playwright() as p:
        browser: Playwright = await p.chromium.launch()
        page = await browser.new_page()
        result = await page.evaluate(script)
        await browser.close()
        return result


async def main():
    script = "(() => { return 'Hello, World!'; })();"
    result = await run_js(script)
    print(result)


asyncio.run(main())
用playwright写一段允许js并获取执行结果的代码兼容asycio

原文地址: https://www.cveoy.top/t/topic/bZcu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录