R - Как извлечь все элементы из списка, расположенного на определенном уровне глубины на основе имен - PullRequest
0 голосов
/ 11 ноября 2018

Я получил список xml_data из разобранного XML-документа.

library(XML)
library(httr)

identifiant_du_document = "ark:/12148/bpt6k96718891"
base_request = "https://gallica.bnf.fr/services/Toc?ark=" 
api_request = paste0(base_request,identifiant_du_document)
get_volume1 <- GET(api_request)
doc<-xmlParse(get_volume1)
xml_data <- xmlToList(doc)

Допустим, я хочу получить все предметы, находящиеся в головном балисе. Под этим я подразумеваю:

xml_data$text$body$div0[[3]]$head
xml_data$text$body$div0[[4]]$head
xml_data$text$body$div0[[5]]$head
xml_data$text$body$div0[[6]]$head
xml_data$text$body$div0[[7]]$head

и т. Д.

1 Ответ

0 голосов
/ 11 ноября 2018
library(xml2)
library(httr)

httr::GET(
  url = "https://gallica.bnf.fr/services/Toc",
  query = list(
    ark = "ark:/12148/bpt6k96718891"
  )
) -> res

doc <- xml_ns_strip(httr::content(res, as="parsed"))

xml_find_all(doc, ".//head") %>% 
  xml_text(trim=TRUE
##  [1] "TABLE DES MATIÈRES." "DÉCEMBRE 1863."      "24 DÉCEMBRE."        "25 DÉCEMBRE."       
##  [5] "26 DÉCEMBRE."        "27 DÉCEMBRE."        "28 DÉCEMBRE."        "29 DÉCEMBRE."       
##  [9] "30 DÉCEMBRE."        "31 DÉCEMBRE."        "JANVIER 1864."       "1er JANVIER."       
## [13] "2 JANVIER."          "3 JANVIER."          "4 JANVIER."          "5 JANVIER."         
## [17] "6 JANVIER."          "7 JANVIER."          "8 JANVIER."          "9 JANVIER."         
## [21] "11 JANVIER."         "13 JANVIER."         "14 JANVIER."         "15 JANVIER."        
## [25] "16 JANVIER."         "17 JANVIER."         "18 JANVIER."         "19 JANVIER."        
## [29] "20 JANVIER."         "21 JANVIER."         "22 JANVIER."         "23 JANVIER."        
## [33] "24 JANVIER."         "25 JANVIER."         "26 JANVIER."         "27 JANVIER."        
## [37] "28 JANVIER."         "29 JANVIER."         "30 JANVIER."         "31 JANVIER."        
## [41] "FÉVRIER 1864"        "1er FÉVRIER."        "2 FÉVRIER."          "3 FÉVRIER."         
## [45] "4 FÉVRIER."          "5 FÉVRIER."          "6 FÉVRIER."          "7 FÉVRIER."         
## [49] "8 FÉVRIER."          "9 FÉVRIER."          "10 FÉVRIER."         "11 FÉVRIER."        
## [53] "12 FÉVRIER."         "13 FÉVRIER."         "15 FÉVRIER."         "16 FÉVRIER."        
## [57] "17 FÉVRIER."         "18 FÉVRIER."         "19 FÉVRIER."         "20 FÉVRIER."        
## [61] "21 FÉVRIER."        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...