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
元素是 title
,author
,year
以及 price
元素父。
子 (Children)
元素节点可有零个、一个或多个子。
例1
中,title
,author
,year
以及 price
元素是 book
元素的子。
同胞 (Sibling)
拥有相同的父的节点,例1
中,title
,author
,year
以及 price
元素都是同胞。
先辈 (Ancestor)
某节点的父、父的父,等等。
后代 (Descendant)
某个节点的子,子的子,等等。
XPath 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
选取节点
XPath
使用 路径表达式
在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。
实例,以 例1
来说明
以上只是一个 XPath
匹配的文档的简单的介绍,XPath
中内置了超过 100 个匹配的方法,十分强大,为抓取数据之后的解析工作提供了很大的便利。