考慮這個頁面:爲什麼xpath會再次找到排除的節點?
<n1 class="a">
1
</n1>
<n1 class="b">
<b>bold</b>
2
</n1>
如果我先選擇第一n1
使用class="a"
,我應該是不包括第二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
怎麼點頭e得到「重新發現」?
注意:我知道如何用兩個單獨的xpath獲得我想要的。這是一個關於爲什麼「子集」沒有按預期工作的概念性問題。我的理解是,b_nodes
應該已經排除了第一個節點--對象應該不知道該節點存在。
更簡單的例子:'b_nodes%>%html_nodes(xpath ='// n1')'。看起來它不是被設計成鏈接/始終指向原始對象。 – Frank
@Frank好點,我以爲我試過,並沒有奏效。我將在 – MichaelChirico