xpath语法的介绍

一、关于xpath的认识

xpath(XML Path Language)是一门在XMLHTML文档中查找信息的语言,可用来在XMLHTML文档中对元素和属性进行遍历。

二、xpath的基本语法

  • 1、选择节点
表达式 描素 示例 结果
nodename 选取此节点的所有子节点 html 选取html下面所有子节点
/ 从当前节点选取直接子节点 /name1 选取根元素下所有的name1节点
// 从全局节点中选取节点,随便哪个位置 //div 从全局选取div节点
@ 根据节点属性来获取节点 //@a[href] 选取全部a标签带href的节点
. 当前节点 ./a 从当前节点下往下查找a节点
.. 当前节点的父节点 ./../div 选择当前节点的父节点div
  • 2、谓语

谓语是用来找出某个特定的节点或者包括某个指定的值的节点,被嵌套在方括号中

路径表达式 描素
//div[@id="box"]/div[1] 获取id为box下第一个div子元素
//div[@id="box"]/div[last()] 获取id为box下最后一个div子元素
//div[@id="box"]/div[position() < 3] 获取id为box下面div前面2个字元素
//div[@price] 选取拥有price属性的div元素
//div[@price=10] 选取拥有price=10的div元素
  • 3、通配符

类似.在正则中表示任意字符的意思,但是在xpath中是用*表示

通配符 描素 示例 结果
* 匹配任意节点 //div/* 获取div下面所有子元素
@* 匹配节点中任何属性 //div[@*] 获取带属性的div元素
  • 4、匹配多路径

    //div/a | //div/img
    # 表示获取div下面的a节点及div下面的img节点
    
  • 5、关于部分匹配的

    response.xpath("//input[start-with(@id,'fuck')]") # 匹配id以fuck开头的元素,id='fuckyou'
    response.xpath("//input[ends-with(@id,'fuck')]") # 匹配id以fuck结尾的元素,id='youfuck'
    response.xpath("//input[contains(@id,'fuck')]") # 匹配id中含有fuck的元素,id='youfuckyou'
    # 注:上面写的是@id是根据id来的,如果要根据class就写@class
    
  • 6、关于不匹配的

    response.xpath(".//span[not(@class)]") # 查找span标签不含class属性的
    response.xpath(".//span[not(@class, 'box')]") # 查找span表示class不等于box的
    response.xpath(".//span[not(contains(@class,'expire'))]") # 查找span标签中class中不包含expire的
    
  • 7、使用多条件查找and

    response.xpath("//tr[not(contains(@class,'all')) and not(contains(@class,'tableRule'))]")
    
  • 8、关于获取文本信息

    tr.xpath('./td[last()]/text()')
    
  • 9、获取节点属性

    html.xpath('//tr//a/@href')
    

results matching ""

    No results matching ""