playwright非同步操作-多標籤執行

车仔面XO發表於2024-11-02
# 作者:yancy
# 建立日期:2024/11/2 10:06
# 放屁: 錢 錢 錢
import asyncio
import time

from playwright.async_api import async_playwright
from playwright.sync_api import sync_playwright
import random
async def get_url(page, url):
    await page.goto(url, timeout=30*10000)

    await page.screenshot(path=f"{int(time.time()*1000000)}.png",full_page=True, timeout=10*10000)
    await page.wait_for_load_state("networkidle")
    print(await page.title())

    # await asyncio.sleep(random.randint(2,3))
    time.sleep(30)
    await page.close()
async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        context = await browser.new_context()
        pages = [await context.new_page() for _ in urls]
        tasks = []
        for pg,url in zip(pages,urls):
            tasks.append(get_url(pg, url))

        await asyncio.gather(*tasks) 




def sync_main():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        context = browser.new_context()
        pages = [context.new_page() for _ in urls]
        for pg,url in zip(pages,urls):
            pg.goto(url)
            # pg.
            time.sleep(2)
            print("當前頁面的標題:", pg.title())
            pg.close()
if __name__ == "__main__":
    urls = [
        'https://playwright.dev/python/docs/api/class-page',
        'https://pythonziliao.com/post/542.html',
        'https://juejin.cn/post/7104964685576798239'

    ]
    asyncio.run(main()) # 非同步版本
    # sync_main() # 同步版

同步和非同步可以分開執行一遍。

相關文章