Рассмотрим эту страницу:
<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
был «открыт заново»??
Примечание. Я знаю, как получить то, что я хочу, с двумя отдельными xpath. Это концептуальный вопрос о том, почему «подмножество» не сработало должным образом. Насколько я понял, b_nodes
должен был полностью исключить первый узел — объект b_nodes
не должен был даже знать, что узел существует.
b_nodes %>% html_nodes(xpath = '//n1')
. Похоже, он не предназначен для привязки / последовательно указывает на исходный объект. - person Frank   schedule 10.02.2017