Рассмотрены несколько способов загрузки последней версии датасета RIRO с репозитория Zenodo. Примеры кода приведены на языке R.
Все версии датасета RIRO (Российского индекса научных организаций) публикуются в репозитории RIRO на платформе Zenodo. Набор таблиц можно скачать с Zenodo вручную или программными средствами, используя OAI-PMH Harvesting API или REST API.
Ниже показаны различные способы скачивания последней версии датасета RIRO с помощью кода на языке R. Последний способ скачивания подойдет для всех пользователей, в том числе и для тех, кто не использует языки программирования.
Открываем сессию в R, загружаем настройки и пакеты.
library(dplyr)
library(readr)
library(tidyr)
library(purrr)
library(DT)
onedrive <- list.dirs("C:/Users", recursive = FALSE) %>%
.[grepl("alexe|WD|lutay",.)] %>% list.dirs(., recursive = FALSE) %>%
.[grepl("onedrive",., ignore.case = TRUE)]
options(DT.options = list(pageLength = 6, dom = "Brtip",
deferRender = TRUE, ordering = TRUE, autoWidth = TRUE, scrollX = TRUE,
language = list(
url = 'https://cdn.datatables.net/plug-ins/1.10.11/i18n/Russian.json')))
Создаем директорию для хранения файлов RIRO.
riro_dir <- "D://RIRO_tables/"
if(!dir.exists(riro_dir)){dir.create(riro_dir)}
require("remotes")
remotes::install_github("eblondel/zen4R")
Осталось загрузить библиотеку zen4R, запросить последнюю версию DOI для ConceptID 4775290, получить список файлов и сохранить в приготовленную директорию.
library(zen4R)
# initialize a session
zenodo <- ZenodoManager$new(token = your_zenodo_token, logger = "INFO")
# request the Concept ID (more info -> https://help.zenodo.org/#versioning)
# 4775290 is a concept ID common for all versions of RIRO - do not change it
my_rec <- zenodo$getDepositionByConceptId("4775290")
last_doi <- my_rec$getLastDOI()
my_rec <- zenodo$getDepositionByDOI(last_doi)
# get the list of files with names and URLs
files <- my_rec$files %>% map_df(~.x %>% flatten()) %>%
select(filename, filesize, download)
# download it
walk2(files$download, paste0(riro_dir, files$filename),
~download.file(url =.x, destfile = .y))
# At https://help.zenodo.org/#versioning Zenodo says that:
# Currently the Concept DOI resolves to the landing page of the latest version of your record.
# This is not fully correct, and in the future we will change this to create a landing page
# specifically representing the concept behind the record and all of its versions.
# so one day we may have to retrieve the latest DOI my_rec$getLastDOI() or smth else
list.files(riro_dir)
[1] "v.1.1.1_table1_basic.csv" "v.1.1.1_table10_monitoring.csv"
[3] "v.1.1.1_table11_wos_names.csv" "v.1.1.1_table12_elibrary.csv"
[5] "v.1.1.1_table2_geo.csv" "v.1.1.1_table3_hierarchy.csv"
[7] "v.1.1.1_table4_ror.csv" "v.1.1.1_table5_wiki.csv"
[9] "v.1.1.1_table6_scopus.csv" "v.1.1.1_table7_mag.csv"
[11] "v.1.1.1_table8_incites.csv" "v.1.1.1_table9_scival.csv"
Для тех, кто хотел бы избежать установки новых пакетов и регистрации, подойдет более прямолинейный способ.
library(rvest)
library(stringr)
zenodo_links <- read_html("https://doi.org/10.5281/zenodo.4775290",
encoding = "UTF-8") %>%
html_nodes(".btn-default") %>% html_attr("href") %>%
.[grepl("table", .)&grepl("csv", .)] %>%
paste0("https://zenodo.org", .)
files <- data.frame(download = zenodo_links) %>%
mutate(filename = stringr::str_extract(download, "v\\..+?\\.csv"))
# download it
if(length(list.files(riro_dir))!=12){
walk2(files$download, paste0(riro_dir, files$filename),
~download.file(url =.x, destfile = .y))
}
files %>% write_excel_csv(paste0(onedrive, "/OpenRIROblog/latest_riro_links.csv"))
CSV-файл с прямыми ссылками на таблицы последней версии хранится в корневой папке сайта с именем latest_riro_links.csv. Код для скачивания файлов с помощью R такой же, как выше.
Обращаем Ваше внимание, что в таблице выше ссылки приведены в качестве примера для того, чтобы показать содержимое файла csv.
Allaire J, Xie Y, McPherson J, Luraschi J, Ushey K, Atkins A, Wickham H, Cheng J, Chang W, Iannone R (2021). rmarkdown: Dynamic Documents for R. R package version 2.7, <URL: https://github.com/rstudio/rmarkdown>.
Blondel E (2021). zen4R: Interface to ‘Zenodo’ REST API. R package version 0.4-3, <URL: https://github.com/eblondel/zen4R>.
Henry L, Wickham H (2020). purrr: Functional Programming Tools. R package version 0.3.4, <URL: https://CRAN.R-project.org/package=purrr>.
Wickham H (2020). tidyr: Tidy Messy Data. R package version 1.1.2, <URL: https://CRAN.R-project.org/package=tidyr>.
Wickham H (2019). stringr: Simple, Consistent Wrappers for Common String Operations. R package version 1.4.0, <URL: https://CRAN.R-project.org/package=stringr>.
Wickham H (2021). rvest: Easily Harvest (Scrape) Web Pages. R package version 1.0.0, <URL: https://CRAN.R-project.org/package=rvest>.
Wickham H, Francois R, Henry L, Muller K (2021). dplyr: A Grammar of Data Manipulation. R package version 1.0.3, <URL: https://CRAN.R-project.org/package=dplyr>.
Wickham H, Hester J (2020). readr: Read Rectangular Text Data. R package version 1.4.0, <URL: https://CRAN.R-project.org/package=readr>.
Xie Y (2020). knitr: A General-Purpose Package for Dynamic Report Generation in R. R package version 1.30, <URL: https://yihui.org/knitr/>.
Xie Y (2015). Dynamic Documents with R and knitr, 2nd edition. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 978-1498716963, <URL: https://yihui.org/knitr/>.
Xie Y (2014). “knitr: A Comprehensive Tool for Reproducible Research in R.” In Stodden V, Leisch F, Peng RD (eds.), Implementing Reproducible Computational Research. Chapman and Hall/CRC. ISBN 978-1466561595, <URL: http://www.crcpress.com/product/isbn/9781466561595>.
Xie Y, Allaire J, Grolemund G (2018). R Markdown: The Definitive Guide. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 9781138359338, <URL: https://bookdown.org/yihui/rmarkdown>.
Xie Y, Cheng J, Tan X (2021). DT: A Wrapper of the JavaScript Library ‘DataTables’. R package version 0.17, <URL: https://CRAN.R-project.org/package=DT>.
Xie Y, Dervieux C, Riederer E (2020). R Markdown Cookbook. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 9780367563837, <URL: https://bookdown.org/yihui/rmarkdown-cookbook>.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Lutai & Sterligov (2021, July 26). Russian Index of Research Organizations: Скачиваем датасет RIRO с Zenodo. Retrieved from https://openriro.github.io/posts/download-riro-with-r/
BibTeX citation
@misc{lutai2021скачиваем, author = {Lutai, Aleksei and Sterligov, Ivan}, title = {Russian Index of Research Organizations: Скачиваем датасет RIRO с Zenodo}, url = {https://openriro.github.io/posts/download-riro-with-r/}, year = {2021} }