爬虫(5) - 网页数据解析(1) | XPath在爬虫中的应用

什么是XPath

  • XPath即为XML路径语言(XML Path Language)
  • XPath可以用于定位XML文本的节点
  • 实际上,XPath也适用于定位HTML中的节点

节点及节点间的关系

  • 在HTML中,节点就是一个个HTML标签
  • 分析节点间的关系也就是要清楚HTML文档中各标签间的关系
  • 理清这些关系对于书写XPath路径表达式来说非常重要

节点分类

  • 先辈节点
  • 父节点
  • 兄弟节点
  • 子节点
  • 兄弟节点

 

XPath路径表达式

XPath使用路径表达式来选取XML文档(或是HTML文档)中的节点或节点集;在节点后加上带有数字的方括号,可以根据兄弟节点在文档中出现的先后次序选择元素(数字1为第一个以此类推)

通过在节点后加上带有属性名-值对的方括号,可以筛选出需要的节点

属性值的写法为:@属性名=“属性值”

路径表达式 描述

/div

/span

从根节点开始选取div节点

从根节点开始选取span节点

//a 选取文档中所有a节点而不考虑其位置
@class 选取名为class的属性
. 选取当前节点
.. 选取当前节点的父节点
/div/a 从根节点开始选取div节点下的a节点
/div/a[2]/img 从根节点开始选取div节点下的第二个a节点下的img节点
//div[@class='header-wrapper'] 选取所有属性class的值为header-wrapper的div节点
//* 选取文档中所有元素
//@* 选取文档中所有带属性的元素
/div/p/text() 选取p节点的文本内容
//div[contains(@class,"post")]

选取带有class属性且包含“post”的所有div节点

取反//div[not(contains(@class,"post"))]

/div/p[last()-1] 选取div下倒数第二个p节点
/div/p[position()>1] 选取div下第二个p节点后的所有兄弟节点
/div/a|div/p 选取div下的a节点和div下的p节点
posted @ 2022-07-04 16:25  葛老头  阅读(193)  评论(0编辑  收藏  举报