R-如何根据名称从位于特定深度级别的列表中提取所有项目

时间:2018-11-11 19:16:03

标签: r xml list

我从解析的xml文档中获得了xml_data列表。

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)

假设我要检索位于 head 平台的所有物品。我的意思是:

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 :(得分:1)

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."