当前位置: 首页 > news >正文

xpath选择器

文章目录

  • 二、使用步骤
    • 1.xpath获取父节点方式
    • 2.document.evaluate()

二、使用步骤

1.xpath获取父节点方式

获取这个div节点的父节点
//div[@aria-label=“Like”]/parent::*

获取父节点的兄弟节点的第二个
//div[@aria-label=“Like”]/parent::/following-sibling::[2]

获取某个节点的祖先是某个属性的节点
//div[@aria-label=“Like”]/ancestor::div[@role=“article”]/div

通过某个节点 获取共同祖先下的另外一个节点
//div[@aria-label=“Like”]/parent::*//ancestor::div[@role=“article”]//div[@data-ad-comet-preview=“message”]//span//div[@dir=“auto”]

2.document.evaluate()

document.evaluate() 是一个在浏览器环境中执行 XPath 表达式的方法
返回一个 XPathResult 对象,该对象包含了表达式执行的结果。
这个方法可以执行几乎任何 XPath 查询,并且可以返回不同类型的结果,

// 使用 document.evaluate() 方法执行 XPath 表达式
const result = document.evaluate(xpathExpression, document, null, XPathResult.ANY_TYPE, null);

xpathExpression:
一个字符串,是你想要执行的xpath表达式。

contextNode
参数指定了xpath表达式的上下文节点。 表达式从这个节点开始执行。
大多数情况下会传入document作为上下文。
如果想要查询文档的某个特定部分,可以传入一个更具体的节点。

namespaceResolver
是一个函数或null
用于解析xpath表达式中出现的命名空间前缀。 如果文档使用了XML命名空间,并且xpth表达式需要处理这些命名空间,就需要提供这个参数;对于不涉及命名空间的普通html文档,可以写null

resultType
该参数指定了期望evaluate()方法返回的结果类型。
XPathResult.ANY_TYPE 表示没有指定特定的结果类型,让浏览器自己决定返回结果。
其他可能的值: XPathResult.NUMBER_TYPE, XPathResult.STRING_TYPE, XPathResult.BOOLEAN_TYPE, XPathResult.UNORDERED_NODE_ITERATOR_TYPE 等,这些值分别对应不同的返回类型。

result
可以是一个已经存在的XPathResult 对象,用于存放结果,或 null
如果传入一个已存在的XPathResult对象,evaluate() 方法会把新的结果放在这个对象中。
如果传入null ,方法会创建一个新的XPathResult对象


在调用 document.evaluate() 之后,会得到一个 XPathResult 对象。
可以使用 iterateNext() 方法来遍历节点集合(如果结果是一个节点集合)

或者使用 singleNodeValue 属性来获取单个节点(如果结果是单个节点)。返回的结果类型取决于你的XPath表达式和你指定的 resultType。


http://www.xdnf.cn/news/59941.html

相关文章:

  • Spring AI 框架-快速搭建以及会话日志(笔记)
  • Java实现希尔排序算法
  • 在线查看【免费】 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览(翻转,缩放,镜像)文件格式网站
  • 突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
  • Nginx详细使用
  • 规则引擎 - Easy Rules
  • 使用openssl为localhost创建自签名
  • 运维概述(linux 系统)
  • 【Python核心库实战指南】从数据处理到Web开发
  • MCP + 数据库,一种比 RAG 检索效果更好的新方式!
  • Python+CoppeliaSim+ZMQ remote API控制机器人跳舞
  • 【c语言】指针进阶
  • 2025年首届人形机器人半程马拉松比赛(附机器人照片)
  • [BJDCTF2020]EzPHP
  • JVM有什么调优参数?
  • RSS 2025|苏黎世提出「LLM-MPC混合架构」增强自动驾驶,推理速度提升10.5倍!
  • 阿里云人工智能大模型MCP协议
  • Node.js和js到底什么关系
  • Hyperlane:Rust Web框架的性能新标杆
  • Vue如何获取Dom
  • Oracle DBA培训一般多长时间?
  • 递归的模板 (以反转链表为例)
  • .net core 中directory , directoryinfo ,file, fileinfo区别,联系,场景
  • mindspeed-rl使用注意事项
  • unity TEngine学习4
  • 驱动开发硬核特训 · Day 16:字符设备驱动模型与实战注册流程
  • AIWS全链路开发与MCP框架下的高可用服务架构设计
  • AI问答Bug修改
  • 教育行业网络安全:守护学校终端安全,筑牢教育行业网络安全防线!
  • 数据结构——栈和队列