playwright下载及基本使用

news/2024/11/25 2:48:06/

playwright下载及基本使用

  • 1. 下载playwright库
  • 2. playwright使用
    • 2.1导入库
    • 2.2 基本使用
  • 3.XPATH元素定位方法
    • 3.1 xpath定位语法
    • 3.2 相关操作
  • 4. 等待及缓存
    • 4.1 等待操作
    • 4.2 添加缓存

1. 下载playwright库

pip install playwright==1.33.0
playwright install 

2. playwright使用

2.1导入库

from playwright.sync_api import sync_playwright

2.2 基本使用

  • 启动引擎,实例化对象
     browser = playwright.chromium.launch(headless=False,channel='chrome') 
    
  • 创建上下文context
    context = browser.new_context() 
    
  • 创建页面对象
    page= context.new_page()
    
  • 页面请求
    page.goto('https://www.baidu.com/')
    
  • 页面关闭
    context.close()
    browser.close()  
    
  • 禁止加载图片
    import re
    # 禁止加载图片,加速加载
    def cancel_request(route):route.abort()page.route(re.compile(r"(.png)|(.jpg)"), cancel_request)
    
  • 窗口最大化
    • 设置参数args=['--start-maximized']no_viewport=True
    with sync_playwright() as playwright:browser = playwright.chromium.launch(headless=False,args=['--start-maximized'], # 窗口大小打开最大)  # 启动引擎,实例化对象context = browser.new_context(no_viewport=True)  #显示最大窗口page = context.new_page()page.goto(url)context.close()browser.close()
    
  • 请求百度总代码
    from playwright.sync_api import sync_playwrighturl='https://www.baidu.com/'
    with sync_playwright() as playwright:browser = playwright.chromium.launch(headless=True,              # 无头args=['--start-maximized'], # 窗口大小打开最大channel='chrome'            # 使用google浏览器打开)                               # 启动引擎,实例化对象# no_viewport=True显示最大窗口context = browser.new_context(no_viewport=True) # 需要创建一个 context,这是一个新的概念,不同于selenium,以后更为方便管理 cookies 和 ip代理page = context.new_page()page.goto(url)context.close()browser.close()
    

3.XPATH元素定位方法

  • xpath教程·
    • xpath基本使用

3.1 xpath定位语法

  • 点位xpath语句前加xpath=即可
     input_xpath = 'xpath= //input[@id="su"]'
    

3.2 相关操作

  • 点击元素

    page.locator(input_xpath).click()
    
  • 获取元素属性

    attribute1 = page.get_attribute(input_xpath, 'value')   # 获取元素value值
    attribute2= page.get_attribute(input_xpath, 'href')     # 获取元素href值
    attribute3 = page.get_attribute(input_xpath, 'src')     # 获取元素src值
    attribute4 = page.get_attribute(input_xpath, 'id')  # 获取元素id值
    
  • 获取元素文本

    text1=page.locator(ul).all_inner_texts()  # 获取所有元素列表
    text2=page.locator(ul).inner_text()    # 所有元素字符串,所有文本变为一整个字符串
    

4. 等待及缓存

4.1 等待操作

  • 强制等待
    import time
    time.sleep(n)  
    
  • playwright强制等待
    page.wait_for_timeout(1000) # 单位ms
    
  • 设置访问最长等待时长
    • 请求操作设置时长
      page.goto(url, timeout=1000)  # 单位ms
      
    • 点击操作设置时长
      page.locator(href_xpath).click(timeout=1000)   # 单位ms
      

4.2 添加缓存

  • 添加缓存,提高加载速度
    from playwright.sync_api import Playwright, sync_playwrightdef run(playwright: Playwright) -> None:browser = playwright.firefox.launch_persistent_context(headless=False, args=['--start-maximized'],user_data_dir=os.path.join(root_path, 'user_data'),# 保存缓存地址accept_downloads=True, slow_mo=250)page = browser.new_page()page.goto('https://www.baidu.com/')browser.close()
    with sync_playwright() as playwright:run(playwright)
    

http://www.ppmy.cn/news/101740.html

相关文章

10分钟学会sovits第一篇

So-vits-svc 基于端到端架构的VITS和soft-vc,用户只需准备几十分钟到几个小时不等的语音或歌声数据,就能制作(训练)属于自己的 AI 声库 (前提是你的显卡足够给力),将一段语音或歌声转换为你想要…

python+django在线借阅图书管理系统vue

本论文是以构建图书借阅为目标,使用 django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块&#…

lammps教程:Ovito计算RDF方法

本文介绍ovito分析rdf的方法以及参数设置。 专栏已经介绍过多种rdf的计算方法。 如:在in文件中计算rdf: lammps案例:液体平衡态rdf计算模拟练习 编程后处理计算rdf: lammps后处理:python ovito编程计算不同原子对…

5601-RIO-MCM 消除Modbus网络上的通信错误

当端口配置为从端口时,此参数指定内部用作Holding的零地址或起点的数据库地址 寄存器(16位整数)数据。Modbus功能读取保持寄存器数据代码3命令(读取保持寄存器)和由功能代码6写入(预设单寄存器)…

【数据分享】第六次、第七次人口普查深圳各街道数据

0. 数据来源 https://tjgb.hongheiku.com/ https://www.hongheiku.com/sichuan/55201.html 手动收集整理 数据展示 数据分享 只分享人口数据,地理数据可能涉及隐私问题,暂不分享,有需要可以邮箱联系uncodongqq.com 链接: https://pan.baid…

2023年上半年系统集成项目管理工程师下午真题及答案解析

试题一(18分) A公司跨国收购了B公司的主营业务,保留了B公司原有的人员组织结构和内部办公系统。为了解决B公司内部办公系统与A公司原有系统不兼容的问题,财务、人力和行政部门联合向公司高层申请尽快启动系统和业务的整合。 A公司领导指定HR总监王工担…

如何让Task在非线程池线程中执行?

Task承载的操作需要被调度才能被执行,由于.NET默认采用基于线程池的调度器,所以Task默认在线程池线程中执行。但是有的操作并不适合使用线程池,比如我们在一个ASP.NET Core应用中承载了一些需要长时间执行的后台操作,由于线程池被…

第五十七天学习记录:C语言进阶:结构体链表的自学

先展示一段代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <stdlib.h>// 定义链表节点结构体 typedef struct Node {int value;struct Node* next; } Node;int main() {// 创建链表头指针Node* head (Node*)malloc(sizeof(Node…