gpt4 book ai didi

r - 为什么 xpath 会再次找到排除的节点?

转载 作者:行者123 更新时间:2023-12-03 15:55:15 24 4
gpt4 key购买 nike

考虑这个页面:

<n1 class="a">
1
</n1>
<n1 class="b">
<b>bold</b>
2
</n1>

如果我首先使用 class="a" 选择第一个 n1,我应该排除第二个 n1,这确实出现了是的:

library(rvest)
b_nodes = read_html('<n1 class="a">1</n1>
<n1 class="b"><b>bold</b>2</n1>') %>%
html_nodes(xpath = '//n1[@class="b"]')
b_nodes
# {xml_nodeset (1)}
# [1] <n1 class="b"><b>bold</b>2</n1>

但是,如果我们现在使用这个“子集”页面:

b_nodes %>% html_nodes(xpath = '//n1')
# {xml_nodeset (2)}
# [1] <n1 class="a">1</n1>
# [2] <n1 class="b"><b>bold</b>2</n1>

1 节点是如何“重新发现”的?

注意:我知道如何使用两个单独的 xpath 获得我想要的东西。这是一个关于为什么“子集化”没有按预期工作的概念性问题。我的理解是 b_nodes 应该完全排除第一个节点——b_nodes 对象甚至不应该知道该节点存在。

最佳答案

html_nodes(xpath = '//n1')

///descendant-or-self::n1的简写,当前节点为整个文档

改成.//n1.表示当前节点是你之前选择的节点

关于r - 为什么 xpath 会再次找到排除的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com