您现在的位置是: 网站首页> 前端技术> HTML HTML
html – Xpath:获取两个元素标签之间的所有内容
Smile 2021-05-27 10:06:23 HTML 阅读:2653
简介在做爬虫爬取web网页时经常用到Xpath来对网页特定的一些数据进行过滤和获取,但是网页中的数据往往是复杂多变的结构,这里简单介绍并且应用Xpath获取HTML网页中两个元素标签之间的所有内容
1、HTML前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Xpath简单应用</title>
</head>
<body>
<div class="item">
<p class="header">头部内容</p>
<span>中间标签内容</span>
中间获取内容
<p class="footer">尾部内容</p>
</div>
</body>
</html>
2、要获取两个元素之间的所有内容,您需要执行这两个集合的交集:
(1)集合A:第二个p之前的所有节点:// p [2] / preceding :: node()
(2)集合B:第一个p之后的所有节点:// p [1] / following :: node()
3、要执行交叉路口,基本公式是:
A[count(.|B) = count(B)]
4、将它应用于您的集合,如上所定义,其中 A=//p[2]/preceding::node() 和 B=//p[1]/following::node(),我们有:
//p[2]/preceding::node()[count(. | //p[1]/following::node()) = count(//p[1]/following::node())]
这将获取从第一个<p>和第二个<p>标签之间的标签内容以及文本内容
5、您还可以轻松的只获取第一个<p>和第二个<p>标签之间文本内容,替换表达式中node()为text().这个将返回两个标签之间的所有文本节点(包括空格和换行符):
//p[2]/preceding::text()[count(. | //p[1]/following::text()) = count(//p[1]/following::text())]
很赞哦! (0)