Вы можете легко получить каждый график как изображение в формате PNG. Я покажу вам шаги, которые вы можете использовать.
Сначала загрузите необходимые библиотеки, а затем получите вектор, содержащий все индикаторы, которые мы могли бы увидеть, используя xpath и html_attr
для очистки ссылок со страницы. :
library(rvest)
library(tidyverse)
site <- "https://tradingeconomics.com"
trading_ec <- read_html(paste0(site, "/indicators"))
link_xpath <- "//ul/li/a[contains(@id, 'ctl00_ContentPlaceHolder1')]"
link_nodes <- html_nodes(trading_ec, xpath = link_xpath)
link_names <- grep("country-list", html_attr(link_nodes, "href"), value = T)
indicators <- unlist(lapply(strsplit(link_names, "/"), function(x) x[3]))
Теперь их можно просматривать и сохранять и т. Д. c.
print(head(indicators))
# [1] "employed-persons" "employment-change" "employment-rate"
# [4] "full-time-employment" "initial-jobless-claims" "job-vacancies"
Далее мы можем определить функцию, которая даст нам список всех стран, доступных для изучения. для любого данного индикатора
list_countries <- function(indicator)
{
url <- paste0("https://tradingeconomics.com/country-list/", indicator)
indicator_page <- read_html(url)
country_nodes <- html_nodes(indicator_page, xpath = "//td/a")
relative_links <- html_attr(country_nodes, "href")
countries <- unlist(lapply(strsplit(relative_links, "/"), function(x) x[2]))
tibble(country = countries,
link = paste0("https://tradingeconomics.com", relative_links))
}
Это позволяет нам видеть все доступные страны для любого индикатора и ссылку на страницу этой страны.
link_df <- list_countries("food-inflation")
print(link_df)
#> # A tibble: 171 x 2
#> country link
#> <chr> <chr>
#> 1 afghanistan https://tradingeconomics.com/afghanistan/food-inflation
#> 2 albania https://tradingeconomics.com/albania/food-inflation
#> 3 algeria https://tradingeconomics.com/algeria/food-inflation
#> 4 argentina https://tradingeconomics.com/argentina/food-inflation
#> 5 armenia https://tradingeconomics.com/armenia/food-inflation
#> 6 aruba https://tradingeconomics.com/aruba/food-inflation
#> 7 australia https://tradingeconomics.com/australia/food-inflation
#> 8 austria https://tradingeconomics.com/austria/food-inflation
#> 9 azerbaijan https://tradingeconomics.com/azerbaijan/food-inflation
#> 10 bahrain https://tradingeconomics.com/bahrain/food-inflation
#> # ... with 161 more rows
Наконец, мы определяем функцию для упростить получение диаграммы с нашей целевой страницы. Мы сохраним это непосредственно на локальный диск, передав в файл нужное имя файла:
get_chart <- function(url, save_to)
{
page <- read_html(url)
image_node <- html_nodes(page, xpath = "//img[@id='ImageChart']")
image_url <- html_attr(image_node, "src")
download.file(image_url, destfile = save_to, mode = "wb")
}
Теперь мы можем сохранить изображение непосредственно на локальный диск. Это может быть добавлено в PDF или html при необходимости.
get_chart(as.character(link_df[1, 2]), path.expand("~/food_chart.png"))
В моем домашнем каталоге R у меня теперь есть следующий файл, сохраненный как food_chart.png :
Конечно, вы можете связать функции вместе, так что вам нужно только указать страну и индикатор и т. Д. c.