XPath语法简介

Posted fugeny

tags:

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

XPath是一种在xml中查找信息的语言,具体可参考W3school XPath教程
XPath是以路径表达式来选择XML文档中的节点或节点集
===

XPath节点(Node)

在 XPath 中,XML 文档是被作为节点树来对待的,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>  (文档节点/根节点)

<book>  (元素节点)
  <title lang="en">Harry Potter</title>  (元素节点,lang为属性节点,Harry Potter为文本节点)
  <author>J K. Rowling</author> 
  <year>2005</year>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

节点关系
父(Parent),子(Children),同胞(sibling),先辈(Ancestor),后代(Descendant)

XPath语法

通过路径表达式来选取节点,语法如下表:
| 表达式 | 描述 | 案例 |
|------------- | -------------| --------------------|
|nodename | nodename节点下的所有子节点 | bookstore选取bookstore的所有子节点 bookstore/book选取bookstore下的所有book节点
|/ | 从根节点选取 | /bookstore选取根元素 bookstore。 假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!|
|// | 从匹配选择的当前节点选择文档中同样的节点,而不考虑它们的位置 | bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。|
|. | 选取当前节点 | .book选择当前book节点|
|.. | 选取当前节点的父节点 |..book选取book的父节点bookstore|
|@ | 选取属性 | //@lang选取名为lang的所有属性|
此外,还可以通过谓语(Predicates)进行更为精准的选择,谓语写在[Predicates]中,例如//title[@lang]则是选择所有拥有名为 lang 的属性的 title 元素。
还可以用*选择未知节点,用逻辑符号|选取若干路径,具体可参考W3school

以上是关于XPath语法简介的主要内容,如果未能解决你的问题,请参考以下文章

(转)Xpath语法格式整理

xpath 语法

Xpath语法-爬虫

常见的爬虫分析库-xpath语法

python爬虫入门

网页解析库-Xpath语法