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())
Python: 如何构造自动化浏览器|playwright
最新推荐文章于 2024-05-09 15:57:30 发布