我正在尝试使用R从以下网站中抓取一些数据,以获得
的数据框library(dplyr)
library(rvest)
library(RCurl)
ebsite1
website1 %>%
html_nodes(".miscTxt a") %>%
html_text() -> countries_list
countries_list
我遇到了一个障碍,因为我不确定如何将各大洲分配给这些国家,并且在这方面需要帮助
答案 0 :(得分:1)
这是一个脚本,将大洲和国家/地区抓取到一个数据框中。
li
节点li
函数提取每个helper
的大洲和国家/地区# Helper function
helper <- function(li)
c(continent=gsub('.*href="https://www\\.worldatlas\\.com/webimage/countrys/([A-z .]*?)/.*\\.htm".*',
'\\1', li, perl = TRUE),
country=rvest::html_text(li))
# Scrap the data
u <- 'https://www.worldatlas.com/cntycont.htm'
continents <- c('africa', 'asia', 'europe', 'namerica', 'oceania', 'samerica')
m <- t(vapply(rvest::html_nodes(xml2::read_html(u), 'li'), helper, FUN.VALUE = character(2)))
# Make a clean data frame
df <- data.frame(m)
df <- df[df$continent %in% continents,]
rownames(df) <- 1:dim(df)[[1]]
# A glimpse
head(df)
# continent country
# 1 africa Algeria
# 2 africa Angola
# 3 africa Benin
# 4 africa Botswana
# 5 africa Burkina
# 6 africa Burundi
tail(df)
# continent country
# 189 samerica Guyana
# 190 samerica Paraguay
# 191 samerica Peru
# 192 samerica Suriname
# 193 samerica Uruguay
# 194 samerica Venezuela