zoukankan      html  css  js  c++  java
  • XPath 语法

    https://www.w3school.com.cn/xpath/xpath_syntax.asp

    1. 层级
    /直接子集   
    //跳级   
    ./当前开始
    
    1. 属性
    @属性访问
    
    1. 函数
    contains(),
    text()
    
    1. 条件
    [ ]
    
    1. 常用xpath表达式
    属性定位:
        #找到class属性值为song的div标签
        //div[@class="song"] 
    层级&索引定位:
        #找到class属性值为tang的div的直系子标签ul下的第二个子标签li下的直系子标签a
        //div[@class="tang"]/ul/li[2]/a
    逻辑运算:
        #找到href属性值为空且class属性值为du的a标签
        //a[@href="" and @class="du"]
    模糊匹配:
        //div[contains(@class, "ng")]
        //div[starts-with(@class, "ta")]
    取文本:
        # /表示获取某个标签下的文本内容
        # //表示获取某个标签下的文本内容和所有子标签下的文本内容
        //div[@class="song"]/p[1]/text()   # 注意,不是p[1].text(),不是点,是/
        //div[@class="tang"]//text()
    取属性:
        //div[@class="tang"]//li[2]/a/@href
    
    1. 例子
    //div[@class="test"]//div[contains(@class,"text2")]
    //div/@href                     #取div下的href属性
    /bookstore/book[position()<3]   # 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
    //book/title | //book/price     # 选取 book 元素的所有 title 和 price 元素。
    
    # xpath选择不包含特定子节点的节点
    # xpath的(与或)用法
    ret = response.xpath('//p[not (img)][not (a)][position()>5] | //div[contains(@class,"WB_text")]').extract()
    
    //选择不包含class属性的节点
    var result = node.SelectNodes(".//span[not(@class)]");
    //选择不包含class和id属性的节点
    var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
    //选择不包含class="expire"的span
    var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
    //选择包含class="expire"的span
    var result = node.SelectNodes(".//span[contains(@class,'expire')]");
    
    
  • 相关阅读:
    Tcp抓包以及Tcp状态
    Wireshark抓包使用指南
    服务端tcp syn无响应,无回复
    升级openssh
    平滑升级Nginx
    Memcached 未授权访问漏洞修复
    服务端高并发分布式架构演进之路
    es索引查询与删除
    申请elasticsearch中x-pack插件许可证及授权
    独立安装ab压力测试工具及测试nginx性能
  • 原文地址:https://www.cnblogs.com/amize/p/13888848.html
Copyright © 2011-2022 走看看