不需要驱动的自动化

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())

 

posted @ 2024-09-27 18:08  布都御魂  阅读(38)  评论(0)    收藏  举报