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。