zoukankan      html  css  js  c++  java
  • xpath笔记-转

    来自Xavier的笔记:https://segmentfault.com/u/lihanx  and https://segmentfault.com/q/1010000008883941

    菜鸟Xpath教程:http://www.runoob.com/xpath/xpath-tutorial.html

    一、基本语法

    1. 表达式

    nodename    # 节点名
    /           # 若在起始位置,则表明从根节点选取node;若不在起始位置,表明选取子节点,本意都是选取全部子节点
    //          # 从任意位置选取node节点
    @           # 选取属性
    *           # 通配符
    

    2.谓语

    [n]                  # 第n个
    [last()]             # 最后一个
    [position()<n]       # 第n个位置之前的全部指定节点
    node[@attr]          # 拥有attr属性的节点
    node[@attr='val']    # 属性attr的值为val的节点
    

    二、轴

    A/child::B ==> A/B         # 选取A节点的子节点B
    parent                     # 父节点
    descendant                 # 所有后代节点
    ancestor                   # 所有先辈节点
    descendant-or-self         # 所有后代元素及其本身
    preceding-sibling          # 所有先辈节点及其本身
    following-sibling          # 当前节点后面的同级节点
    preceding                  # 整个文档中,当前节点之前的所有节点
    preceding-sibling          # 父节点中,当前节点之前的所有同级节点
    following                  # 整个文档中,当前节点之后的所有节点
    self                       # 当前节点本身
    attribute                  # 当前节点的所有属性
    namespace                  # 当前节点所有的命名空间
    
    

    三、运算符

    |          # 并集
    +          # 加法
    -          # 减法
    *          # 乘法
    div        # 除法
    =          # 等于
    !=         # 不等于
    <          # 小于
    <=         # 小于
    >          # 大于
    >=         # 大于等于
    or         # 或
    and        # 与
    mod        # 取余
    

    四、示例

    element_dom.xpath(“/div”)
    # 选取根节点的子节点div(包含其全部后代节点)
    
    element_dom.xpath("//p")
    # 选取任意位置的p节点
    
    element_dom.xpath("//div[@class='title']")
    # 选取class值为title的div节点
    
    element_dom.xpath("//div[@class='item_list']//li/a/@href")
    # 选取任意位置的class为item_list的div节点 的全部子节点li 中a节点的href属性
    
    element_dom.xpath("/div/@name")
    # 选取div节点的name属性值
    
    element_dom.xpath("/div/descendant::text()")
    # 选取div节点全部后代节点的文本
    
    element_dom.xpath("//div/p|//ul/li/a")
    # 选取div节点的子节点pa 与 ul/li/a 的并集
    
    element_dom.xpath("//div/p[2]")
    # 选取div中名为p的子节点的第2个
    
    element_dom.xpath("//div/*[id='name']")
    # 选取div的子节点中id值为name的任意节点
    
    element_dom.xpath("(//div//p)[1]")
    # //div//p结果集中的第一个结果
  • 相关阅读:
    求n的元素的最大最小值
    输出一个集合的所有子集,从长到短
    树的各种操作java
    几个笔试题目总结
    小知识不断补充
    java、C语言实现数组模拟栈
    LearnHowToThink
    Android中的this、Activity、Context等
    Android已上线应用开源分享中(第二季)
    Android已上线应用开源分享中(第一季)
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7398689.html
Copyright © 2011-2022 走看看