Python: 如何构造自动化浏览器|playwright

from loguru import logger
from playwright.async_api import async_playwright
import asyncio


class PlayWright:
    def __init__(self, pageurl, headless=False, slowmo=100, timeout=30*1000) -> None:
        self.pageurl = pageurl      # 访问地址
        self.headless = headless    # 是否显示浏览器
        self.slowmo = slowmo        # 操作延迟
        self.timeout = timeout      # 超时
    
    # 启动浏览器
    async def start(self, proxy=None):
        self.proxy = proxy
        self.browser = await self.getBrowser()
        self.page = await self.newPage()
    
    # 构造浏览器
    async def getBrowser(self):
        self.playwright = await async_playwright().start()
        if self.proxy:
            self.proxy ={'server': self.proxy}
        return await self.playwright.chromium.launch(headless=self.headless, proxy=self.proxy, slow_mo=self.slowmo)
    
    # 新建页面
    async def newPage(self):
        page = await self.browser.new_page()
        page.set_default_timeout(self.timeout)
        return page
        
    
    # 访问页面
    async def gotoPage(self):
        try:
            await self.page.goto(self.pageurl, wait_until='commit')
            await self.page.wait_for_load_state('load')
            logger.info(f' - 打开{self.pageurl}成功!')
        except Exception:
            logger.error(f' - 打开{self.pageurl}失败!')
    
    # 关闭浏览器
    async def cleanUp(self):
        await self.browser.close()
        await self.playwright.stop()
    
    
    async def func(self):
        await self.page.locator('#kw').fill('扶苏如是')
        await self.page.locator('#su').click()
        #await self.page.wait_for_timeout(2000)
        


async def f():
    await p.start()
    for _ in range(10):
        await p.gotoPage()
        await p.func()
    await p.cleanUp()



if __name__ == '__main__':
    p = PlayWright('https://www.baidu.com')
    asyncio.run(f())

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶苏如是

谢谢你这么优秀还支持我~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值