Xpath基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xpath基础相关的知识,希望对你有一定的参考价值。

  XPath是一门在XML文档中查找信息的语言。XPath可用来在XML文档中对元素和属性进行遍历。由于我们单纯使用dom定位节点时,大部分时间需要一层一层的处理,如果使用xPath,定位节点将变得很轻松。它可以根据路径,属性,甚至是条件进行节点的检索。

  路径表达式:

  - 斜杠(/) 作为路径内部的分隔符;

  - 同一个节点有绝对路径和相对路径两种写法

  - "." 表示当前节点

  - ".." 表示当前节点的父节点

  - nodename (节点名称) : 表示选择该节点的所有子节点

  - "/" 表示选择根节点

  - "//" 表示选择任意位置的某个节点

  - "@" 表示选择某个属性

  - /bookstore : 选择根节点 bookstore, 这是绝对路径写法。

  - "bookstor/book" 选取所有属于bookstore 的子元素的book 元素,这是相对路径写法。

  - //book  选择所有book 子元素,而不管它们在文档中的位置

  - bookstore//book  选择所有属于bookstore 元素的后代的book元素,而不管它们位于bookstore 之下的什么位置。

  - //@lang 选取所有名为lang的属性

  谓语

  "谓语条件",就是对路径表达式的附加条件;所有条件都写在方括号[] 中,表示对节点进行进一步的筛选。

  - /bookstroe/book[1]  表示选择bookstroe 的第一个book 子元素

  - /bookstroe/book[last()]  表示选择bookstore 的最后一个book子元素。

  - /bookstore/book[last()-1] 表示选择bookstore 的倒数第二个book子元素。

  - /bookstore/book[position()<3]  表示选择bookstore 的前两个book子元素。

  - //title[@lang]  表示选择所有具有lang 属性的title 节点。

  - //title[@lang=‘eng‘]  表示选择所有lang属性的值等于“eng” 的title 节点。

  - /bookstore/book[price]  表示选择bookstore的book子元素,且被选中的book元素必须带有price子元素。

  - /bookstore/book[price>35.00]  表示选择bookstore 的book子元素,且被选中的book 元素的price 子元素值必须大于35.

  - /bookstore/book[price>35.00]/title  表示在上例结果集合中,选择title子元素。

  - /bookstore/book/price[.>35.00]  表示选择值大于35的"/bookstore/book"的price子元素。

  通配符

  - "*" 表示匹配任何元素节点

  - "@"  表示匹配任何属性值

  - node() 表示匹配任何类型的节点

  - "//*"  表示选择文档中的所有元素节点

  - "/*/*"  表示选择所有第二层的元素节点。

  - "/bookstore/*"  表示选择bookstore  的所有元素子节点

  - "//title[@*]"   表示选择所有带有属性的title元素。

  

 

以上是关于Xpath基础的主要内容,如果未能解决你的问题,请参考以下文章

xpath解析基础

Xpath基础

Python爬虫基础——XPath语法的学习与lxml模块的使用

[Python 练习爬虫] XPATH基础语法

scrapy基础 之 xpath网页结构

爬虫基础之一:XPath插件语法及使用