XPath

这周的工作主要是数据抓取,在这个过程中我使用了原生的 open-uri 来采集页面,然后再使用 XPath 对页面进行解析。在以前的工作中我还未使用过 XPath 进行页面的解析,这里对 XPath 的大概功能做一个简单的总结。

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航

基本术语

在 XPath 中,有其中类型的节点: 元素属性文本命名空间处理指令注释 以及 根节点

以下面的这个 XML 文档为例 (后面简称 例1):

<bookstore>
    <book>
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
</bookstore>

上面的 XML 文档中的节点的例子,bookstore根节点author元素节点lang属性节点

节点关系

父 (Parent)

每个元素以及属性都有一个父。 例1 中,book 元素是 titleauthoryear 以及 price 元素父。

子 (Children)

元素节点可有零个、一个或多个子。 例1 中,titleauthoryear 以及 price 元素是 book 元素的子。

同胞 (Sibling)

拥有相同的父的节点,例1 中,titleauthoryear 以及 price 元素都是同胞。

先辈 (Ancestor)

某节点的父、父的父,等等。

后代 (Descendant)

某个节点的子,子的子,等等。

XPath 语法

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

选取节点

XPath 使用 路径表达式 在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

实例,以 例1 来说明

以上只是一个 XPath 匹配的文档的简单的介绍,XPath 中内置了超过 100 个匹配的方法,十分强大,为抓取数据之后的解析工作提供了很大的便利。