import asyncio from Decorator import Decorator from playwright.async_api import async_playwright class MyClass: @Decorator.retry async def run_html(self, playwright, url: str): # 启动 Chromium 浏览器,无头模式(headless=True 表示不显示浏览器界面) browser = await playwright.chromium.launch(headless=False) # 在浏览器中创建一个新的上下文 context = await browser.new_context() # 在上下文里创建一个新的页面 page = await context.new_page() # 向页面添加一个初始化脚本,脚本的路径为 './stealth.min.js' # await page.add_init_script(path='./stealth.min.js') # 导航到指定的 URL,设置超时时间为 4000 毫秒 await page.goto(url, timeout=4000) # 暂停 5 秒 await asyncio.sleep(5) # 获取页面的内容 fp = await page.content() # 返回页面内容 return fp async def response_page(self, page_url): # 使用async_playwright上下文管理器来初始化playwright对象。这是Playwright库的常见用法, # 用于管理Playwright相关资源的创建和释放。 async with async_playwright() as playwright: # 调用self对象的run_html方法(假设self是一个类实例,并且run_html方法是在该类中定义的), # 传入playwright对象和page_url,并等待这个异步操作完成。 # 这个操作可能是获取指定page_url的页面 HTML 内容,结果存储在res变量中。 res = await self.run_html(playwright, page_url) # 检查是否成功获取到页面内容。如果res不为空(表示获取成功),则继续后续操作; # 否则,可能会有相应的错误处理(这里未显示) return res async def main(): obj = MyClass() page_url='http://edutoutiao.com/zxx/15233.html' result = await obj.response_page(page_url) print(result) asyncio.run(main())
标签:playwright,run,async,url,await,需要,自动化,驱动,page From: https://www.cnblogs.com/wolvies/p/18436312