r - R web在多个页面上抓取图表
问题描述
也许这个主题在其他帖子中得到了处理,但我找不到我的问题的解决方案。我正在尝试从https://tradingeconomics.com/indicators网站抓取数据。我正在尝试抓取有关指标的数据,特别是国家名称和任何国家链接中包含的地块。
tradec = function(tradelink) {
trade_page = read_html(tradelink)
trade_element = trade_page %>% html_nodes(".primary_photo+ td a") %>%
html_text() %>% paste(collapse = ",")
return(trade_element)
}
main_page <- read_html("https://tradingeconomics.com/country-list/gdp-growth-rate")
country_list <- main_page %>%
html_nodes("#ctl00_ContentPlaceHolder1_ctl01_UpdatePanel1 a") %>%
html_text() %>%
trimws %>%
gsub(" ", "-", .)
tradec_df = data.frame()
for (i in country_list) {
link = paste0("https://tradingeconomics.com/", i , "/gdp-growth")
page = read_html(link)
country = page %>% html_nodes("#SelectCountries") %>% html_text()
tradec_charts = page %>% html_nodes("#ImageChart") %>% html_text
tradec_df = rbind(tradec_df, data.frame(country, tradec_charts, stringsAsFactors = FALSE))
print(paste("Page:", country_list))
}
在理想的世界中,我希望为每个国家打印一个页面,包括国家名称和情节。我很确定地块可能会以某种方式被刮掉并显示,尽管我不知道如何。有什么建议吗?
解决方案
它不起作用,因为countries
变量中的每个元素都包含非法字符:
[1] "\r\n South Africa\r\n "
[2] "\r\n Peru\r\n "
[3] "\r\n Botswana\r\n "
所以你需要做的就是用 删除这些字符trimws()
,所以它们看起来像这样:
country_list
[1] "South Africa" "Peru" "Botswana" "India" "Turkey"
[6] "New Zealand" "Argentina" "Malta" "Slovenia" "El Salvador"
[11] "Ireland" "Rwanda" "Albania" "Luxembourg" "Nigeria"
[16] "Canada" "Jamaica" "Uruguay" "Brazil" "Paraguay"
这行得通。我更改的唯一行是将管道添加到trimws()
:
library(tidyverse)
library(rvest)
tradec = function(tradelink) {
trade_page = read_html(tradelink)
trade_element = trade_page %>% html_nodes(".primary_photo+ td a") %>%
html_text() %>% paste(collapse = ",")
return(trade_element)
}
main_page <- read_html("https://tradingeconomics.com/country-list/gdp-growth-rate")
country_list <- main_page %>%
html_nodes("#ctl00_ContentPlaceHolder1_ctl01_UpdatePanel1 a") %>%
html_text() %>%
trimws
tradec_df = data.frame()
for (i in country_list) {
link = paste0("https://tradingeconomics.com/", i , "/gdp-growth")
page = read_html(link)
country = page %>% html_nodes("#SelectCountries") %>% html_text()
tradec_links = page %>% html_nodes("#ImageChart") %>% html_text
}
推荐阅读
- .net - JSON反序列化创建列表
- oauth-2.0 - Facebook OAuth 登录未在 ASP.NET Core 2.2 中获取用户配置文件
- typescript - 在 monorepo 代码共享中创建 React App + Typescript
- opencv - Python:时间拉伸波文件 - 三种方法之间的比较
- ios - SWIFTUI 在 TabView 中隐藏当前视图的 navigationBarBackButton
- c++ - 什么可以防止类中相邻成员的重叠?
- javascript - 从 nodejs child_proccess 运行 kubectl
- django - 如何在 Django 设置中指定显式主机名?
- pandas - 删除仅包含一个类别的行 - Pandas - Python
- javascript - 等待 forEach 循环