zoukankan      html  css  js  c++  java
  • Xpath 选择器

    Xpath介绍?

    网页由三部分组成: HTML, CSS, JaveScript, HTML页面标签存在层级关系, 即DOM树,在获取数据目标时可以根据网页层次关系定位标签, 在获取文本属性, 每个标签就是一个Dom

    另外 xpath 还有其他领域会用到,如:爬虫框架 Scrapy, 手机APP框架 Appium

    什么时候用css,什么时候xpath?
    当查找元素比较简单,用css没错,如果复杂,用xpath比较好

    Xpath 安装

    # 使用步骤
    1。xpath安装:pip install lxml

    2. 使用步骤:
    # 导包
    from lxml import etree
    res = requests.get(url= url, headers=headers)
    tree = etree.HTML(res.text) # 加载直接从网页上爬取来的数据
    tree = etree.parse(html,etree.HTMLParser()) # 加载本地HTML 页面,html 是文件名字

    tag_or_attr = tree.xpath('xpath表达式')

    常用语法

    1. nodename:   节点定位名(标签)
      .:         当前
    2. .//:      从当前节点选取子孙节点
    3. ./ :      从当前节点选取直接子节点
    4. nodename[@attribute = '...']:    根据属性定位标签 '//div[@class=''ui-main]'
    5. @attributename:    获取属性
    6. text()    获取文本

    7. /:     表式整个html根节点

    属性匹配两种情况: 多属性匹配 & 单属性多值匹配

    # 多属性匹配
    示例: tree.xptah('//div[@class="item" and @name="text"]/text()')
    <div class="item" name="test">div标签1</div>
    <div ckass= "item">div2标签</div>
    tree.xpath('//div[@class="item" and @name="test"]/text()' )
    # 单属性匹配多值匹配
    示例:tree.xpath('//div[contains(@class,"itrm")]/text()')

    # 按顺序选择:
    1.索引定位: 从1开始(牢记,牢记,牢记)
    2. last()函数:last()-1代表倒数第二个
    3. position()函数: 位置

  • 相关阅读:
    宝塔面板连接数据库失败
    fastadmin上线部署中遇到访问路径问题
    宝塔部署时,出现“open_basedir restriction in effect”错误
    layui hint:upload is not a valid module
    thinkphp--控制器怎么分配变量到公共模板
    jquey click事件无效
    1.31 SVN代码版本控制
    8.1 性能优化简介
    5.31 Nginx最全面知识
    4.115 Spring的事务管理
  • 原文地址:https://www.cnblogs.com/sunzzc/p/13182716.html
Copyright © 2011-2022 走看看