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')]");
    
    
  • 相关阅读:
    NIO与普通IO文件读写性能对比
    JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
    软件工程之软件设计
    ubuntu下管理android手机
    AFNetworking2.0 NSHipster翻译
    【Jsoup爬取网页内容】
    IOS 表视图UITableView 束NSBundle
    如何将位图格式图片文件(.bmp)生成geotiff格式图片?
    opencv3 使用glob遍历并修改文件名
    Ubuntu clion下载及激活
  • 原文地址:https://www.cnblogs.com/amize/p/13888848.html
Copyright © 2011-2022 走看看