爬虫xpath

什么是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>的后代
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容