您现在的位置是: 网站首页> 前端技术> HTML HTML

html – Xpath:获取两个元素标签之间的所有内容

Smile 2022-01-23 HTML 阅读:1209

简介在做爬虫爬取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)

文章评论

站点信息