Как найти все узлы без дочерних элементов (начиная с не root узла!) В xpath / R? - PullRequest
0 голосов
/ 22 февраля 2020

Я знаю, как найти все узлы, у которых нет дочернего узла:

library(rvest)
library(magrittr)

doc <- "https://www.r-bloggers.com/" %>% GET %>% content
leafes <- doc %>% html_nodes(xpath = "//*[not(descendant::*)]")
length(leafes)    

Теперь я пробую то же самое с узлов, которые не являются узлом root:

doc <- "https://www.r-bloggers.com/" %>% GET %>% content
tags <- doc %>% html_nodes(xpath = "/html/body/div/div/div/div/h2/a")
nonRootNodeWithChildr <- tags %>% html_nodes(xpath = "..") %>% html_nodes(xpath = "..")
nonRootNodeWithChildr %>% html_nodes(xpath = "*[not(descendant::*)]")

Я предполагаю, что мне нужно go для *[] вместо //*, чтобы не начинать с документа root, однако, "//" убедил бы, что я могу go и для детей Grand ++.

1 Ответ

0 голосов
/ 23 февраля 2020

Я думаю

nonRootNodeWithChildr %>% html_nodes(xpath = ".//*[not(descendant::*)]")

может быть тем, что я искал.

...