首页 > 其他分享 >playwright异步操作-多标签执行

playwright异步操作-多标签执行

时间:2024-11-02 10:08:27浏览次数:3  
标签:异步 playwright url 标签 await pg context page

# 作者: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() # 同步版

同步和异步可以分开执行一遍。

标签:异步,playwright,url,标签,await,pg,context,page
From: https://www.cnblogs.com/facenl/p/18521669

相关文章

  • TAG与RAG实现摘要和标签自动化转化客户反馈意见
    在数据驱动的今天,企业通过评论、调查和社交媒体互动获得大量客户反馈。虽然这些信息可以产生宝贵的洞察力,但也带来了巨大的挑战:如何从大量信息中提炼出有意义的数据。先进的分析技术正在彻底改变我们了解客户情感的方法。其中最具创新性的是表增强生成(TAG)和检索增强生成(RAG)技术,它......
  • video 标签 缓存优化策略
    在Web开发中,处理视频内容的缓存是一个常见的需求,尤其是在视频播放过程中管理缓存(buffer)以优化用户体验。HTML5的<video>元素及其相关的JavaScriptAPI提供了一些方法来管理和监控视频的缓存状态。HTMLMediaElement缓存(Buffer)<video>元素是HTMLMediaElement接口的一个实......
  • RabbitMQ的解耦、异步、削峰是什么?
    RabbitMQ在分布式系统和微服务架构中起到了重要的作用,其特性可以实现解耦、异步以及削峰,下面是对这三个概念的详细解释:1.解耦解耦是指使系统的不同组件间的依赖关系减少或消失。在使用RabbitMQ时,生产者(发送消息的组件)和消费者(接收和处理消息的组件)不直接交互,而是通过消息队......
  • 介绍使用@reduxjs/toolkit工具包发送异步请求最简便的方式
     1、安装@reduxjs/toolkit工具包pnpmi @reduxjs/toolkitreact-redux2、在src文件夹下新建store文件夹3、在store文件夹下新建index.js文件作为store的入口文件,其次再新建homeReducer.js文件4、homeReducer.js文件中写入以下代码//从@reduxjs/toolkit库中导入crea......
  • 高并发IPC通信实现:HarmonyOS中的异步调用与多线程处理
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今的移动应用开发领域,高并发通信场......
  • 深入解析C#异步编程:await 关键字背后的实现原理
    C#异步编程中await实现原理详解在C#中,async和await关键字用于编写异步代码。本文将详细介绍await的实现原理,包括状态机的生成、回调函数的注册和触发等关键步骤。1.异步方法的基本概念在C#中,async关键字标记一个方法为异步方法,而await关键字用于等待一个异步操作完......
  • 【java】什么是 Future 和 CompletableFuture - 一篇文章快速入门 Java 异步编程
    1.引言在现代Java编程中,异步编程变得越来越重要。随着多核处理器的普及,充分利用多线程可以大大提高程序性能和用户体验。在这种情况下,Future和CompletableFuture成为处理异步任务的核心工具。2.Future是什么?Future的定义及基本概念Future是Java并发库中的接口......
  • Prometheus02 Prometheus标签管理和告警, 定制Exporter
    3.4定制Exporter3.4.1定制Exporter说明开发应用服务的时候,就需要根据metric的数据格式,定制标准的/metric接口。#各种语言帮助手册:https://github.com/prometheus/client_golanghttps://github.com/prometheus/client_pythonhttps://github.com/prometheus/client_ja......
  • html的常用标签与实例
    常用标签<!DOCTYPEhtml><htmllang="en"><!--不在浏览器显示--><head><!-- 编码格式-->  <metacharset="UTF-8"><!-- 标题-->  <title>Title</title>  <style>    div   {......
  • C++ 模板专题 - 标签分派(Tag Dispatching)
    一:概述:        在C++中,TagDispatching是一种编程技巧,主要用于在编译期根据不同的类型或特征选择不同的函数重载或代码分支。TagDispatching借助类型标签(tags)进行函数调度,用于在模板中实现编译期的静态分派。这种方法特别适合在泛型编程中根据类型特性(如迭代器......