什么是xpath?
- XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 的标签需要我们自行定义
- XML 被设计为具有自我描述性
- XML 是 W3C 的推荐标准
XPath路径表达式
在使用XPath之前,需要先了解下XPath的节点,路径概念,这也是XPath这门语言的单词和语法。不求全通,至少了解嘛。其中,路径表达式是xpath()的传入参数。xpath()使用路径表达式对XML文档中的某个节点(或者多个节点)进行定位。路径表达式实例:/html/body/div[@class=”content”] 。按照节点和路径概念,这个表达式是按照html,body,div层级关系,寻找属性里有class=”content”的div节点。当然,这个结果也可能是多个节点。
- notename :查找出html所有标签名为notename的节点
- / : 表示从根节点开始查找(相对性的)
- //: 从任意位置匹配出你想要的节点
- . :选取当前节点
- .. :选取当前节点的父节点
- @ : 表示选择属性
- text() :取标签的文本内容
- notename[1] : 取标签名为notename的第一个节点
- notename[last()] : 取标签名为notename的最后一个节点
XPath使用场景
在爬虫技术领域里为什么需要XPath呢?这是因为我们通过爬虫去网上爬取的很多都是html文档(比如爬知乎,爬微博),而我们通常需要对html数据进行解析,获取对我们有用的数据,然后再将这些处理后的数据存储起来。而解析HTML就需要用到XPath。(另外也可以通过css query来定位节点,但是一般其背后也是利用了XPath技术,而且XPath更加灵活和通用)
节点之间的关系
节点之间的关系主要有以下几种:
- 父子关系:<book>节点是<title>, <author>等节点的父节点(Parent),相应的,<title>等节点为<book>节点的子节点(Children)
- 兄弟关系(Sibling):<title>, <author>互为兄弟关系
- 先辈(Ancestor): 父节点,父的父都是先辈,比如<book>, <bookstore>是<author>的先辈
- 后代(Descendant): 子节点,子的子都是后代,如<book>, <author>都是<bookstore>的后代
网友评论