xPath解析HTML页面教程

XPath基础

简介

什么是XPath,XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。同样的HTML(超文本标记语言)也是标准通用标记语言的子集,也可以通过XPath来对HTML文档进行定位找寻节点。

语法

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。

使用例子

<html>

<head>
    <meta charset="utf-8" />
    <title class='title'>网页标题</title>

</head>

<body>
    <h1 id='my_h1'>标题1</h1>
    <p class='my_p'>段落1</p>
    <p class='my_p'>段落2</p>
    <span>25.00</span>
    <span>255.00</span>
    <div>
        <span>25.00</span>
        <p>qwer</p>
    </div>
    <div>
        <span>225.00</span>
        <p>qwer</p>
    </div>

</body>

</html>
路径表达式结果
html选取 html 元素的所有子节点。
/html选取根元素 html。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
html/body选取属于 html的子元素的所有 body元素。
//body选取所有 body子元素,而不管它们在文档中的位置。
body//p选择属于 html元素的后代的所有 p元素,而不管它们位于 html之下的什么位置。
//@class选取名为 class的所有属性。
路径表达式结果
//body/p[1]选取属于 body子元素的第一个 p 元素。
//body/p[last()]选取属于 body子元素的最后一个 p元素。
//body/p[last()-1]选取属于 body子元素的倒数第二个 p元素。
//body/p[position()<3]选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@class]选取所有拥有名为 class 的属性的 title 元素。
//title[@class=’title’]选取所有 title 元素,且这些元素拥有值为 title 的 class属性。
/html/body[span>35.00]选取 html 元素的所有 body元素,且其中的 span元素的值须大于 35.00。
/html/body[span>35.00]/p选取 html 元素中的 body元素的所有 p元素,且其中的 span 元素的值须大于 35.00。

选取未知节点

通配符描述
*匹配任何元素节点。
@*匹配任何属性节点。
node()匹配任何类型的节点。
路径表达式结果
/html/*选取 html 元素的所有子元素。
//*选取文档中的所有元素。
//p[@*]选取所有带有属性的 p元素。

选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

路径表达式结果
//body/p | //body/span选取 body元素的所有 p和 span元素。
//p | //span选取文档中的所有 p和 span元素。
/html/body/p | //span选取属于 html元素的 body元素的所有 p元素,以及文档中所有的 span元素。

可在浏览器控制台中使用 $x()函数对文档进行节点获取。

如:获取html下所有的p标签

$x('/html//p')
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值