Как читать конкретные теги с использованием XML2 - PullRequest
1 голос
/ 04 мая 2019

Задача

Я пытаюсь получить все URL-адреса в https://www.ato.gov.au/sitemap.xml (N.B. это файл ~ 9 МБ), используя xml2. Любые указатели оценены.

Моя попытка

library("xml2")
data1 <- read_xml("https://www.ato.gov.au/sitemap.xml")
xml_find_all(data, ".//loc")

Я не получаю вывод, который мне нужен:

{xml_nodeset (0)}

Ответы [ 2 ]

1 голос
/ 04 мая 2019

На всякий случай, если вам нужны все URL-адреса в кадре данных, вы можете использовать следующий код:

library(XML)
library(xml2)
library(httpuv)
library(httr)
library(RCurl)
library(data.table)
library(dplyr)
url <- "https://www.ato.gov.au/sitemap.xml"
xData <- getURL(url)
doc <- xmlParse(xData)
data<-xmlToList(doc)
a<-as.data.frame(unlist(data))
a<-dplyr::filter(a,grepl("http",`unlist(data)`) )
head(a)

Приведенный выше код даст вам кадр данных со списком всех URL-адресов.Мне было просто интересно, что вы также можете использовать программное обеспечение для извлечения URL "Xenu" для извлечения URL-адресов с веб-сайта, которые не включены в карту сайта.Дайте мне знать, если вы застряли где-то посередине.

1 голос
/ 04 мая 2019

Не используется xml2, но я смог получить его, используя rvest

library(dplyr)
library(rvest)

url <- "https://www.ato.gov.au/sitemap.xml"

url %>%
  read_html() %>%
  html_nodes("loc") %>%
  html_text()
...