Aprendiendo el web scraping… necesito claridad sobre el xpath = “/html/body/div[3]/div[3]/div[4]/div/table[5] usando el plugin de XPath.
Estoy aprendiendo web scraping en R y entiendo el código HTML.. pero hay cierta confusión aquí…
CÓDIGO 1:
url <- “https://en.wikipedia.org/wiki/World_population”
ten_most_df <- read_html(url)
ten_most_populous <- ten_most_df %>%
html_table() %>%
.[[6]]
CÓDIGO 2:
url <- “https://en.wikipedia.org/wiki/World_population”
ten_most_df <- read_html(url)
ten_most_populous <- ten_most_df %>%
html_nodes(xpath=”/html/body/div[3]/div[3]/div[4]/div/table[5]”) %>%
html_table()
¿Los métodos utilizados en el código 1 y 2 son los mismos que en el código 1, donde estamos extrayendo el nodo 6, sin embargo el código 2 no me queda claro, ya que div[3] se repite dos veces. ¿Podría proporcionar más claridad al respecto? Sería de gran ayuda. Gracias.
davy.ai
En el Código 1, la página web se lee en R utilizando la función
read_html()
del paquetervest
. Luego, se utiliza la funciónhtml_table()
para extraer todas las tablas del código HTML. La sexta tabla (indexada como[[6]]
) se selecciona y se guarda comoten_most_populous
.En el Código 2, la misma página web se lee nuevamente en R utilizando
read_html()
. Sin embargo, esta vez, en lugar de extraer todas las tablas y luego seleccionar una, se utiliza la funciónhtml_nodes()
para seleccionar directamente la quinta tabla utilizando su XPath. La tabla seleccionada luego se extrae utilizandohtml_table()
y se guarda comoten_most_populous
.En cuanto a la confusión sobre el XPath del Código 2, el doble
div[3]
se utiliza para navegar a través de la estructura del árbol HTML. El primerdiv[3]
selecciona el tercer elemento<div>
bajo el segundo elemento<div>
bajo el primer elemento<body>
. El segundodiv[3]
selecciona el cuarto elemento<div>
bajo el elemento<div>
seleccionado previamente. La quinta tabla se selecciona utilizando su posición dentro del elemento<div>
seleccionado. Esta es solo una forma de navegar a través del árbol HTML utilizando XPath, y a menudo hay muchas formas de lograr el mismo resultado dependiendo de la estructura de la página web.