R 如何向已删除web表的数据中添加变量

R 如何向已删除web表的数据中添加变量,r,rvest,R,Rvest,我想从欧足联网站()的几个页面上抓取表格,并尝试将其合并到一个数据帧中。数据框应包含单人页面(表“比赛日志”)上的所有信息,以及带有玩家名称的列(变量) Chris的解决方案很好,但我想从页面顶部(选择器“.bigtTitle”)而不是“常规信息”框中抓取玩家的名字 生成数据帧的代码: length_links <- length(links) all_tables <- vector("list",length_links) for(i in seq_len(length_link

我想从欧足联网站()的几个页面上抓取表格,并尝试将其合并到一个数据帧中。数据框应包含单人页面(表“比赛日志”)上的所有信息,以及带有玩家名称的列(变量)

Chris的解决方案很好,但我想从页面顶部(选择器“.bigtTitle”)而不是“常规信息”框中抓取玩家的名字

生成数据帧的代码:

length_links <- length(links)
all_tables <- vector("list",length_links)
for(i in seq_len(length_links)){
  page <- html(links[i])
  all_tables[[i]] <- as.data.frame(html_table(page))
}

do.call(rbind, all_tables)
length\u链接
库(stringr)
c('http://www.uefa.com/teamsandplayers/players/player=1900730/profile/index.html',
'http://www.uefa.com/teamsandplayers/players/player=250078460/profile/index.html',
'http://www.uefa.com/teamsandplayers/players/player=250045034/profile/index.html“)->链接
姓名查找xx
substr(xx,开始=6,停止=nchar(xx))->u
U
}
长度链接表列表
如果(长度(tableList)==0)下一步
用于(cc in 1:长度(表格列表)){
如果(全部(ColName(tableList[[cc]])[1:3]==c(“日期”、“比赛”、“阶段”)){
所有表[[i]]k

你能为
链接提供一些可复制的代码吗?
能更详细地描述你想要的输出吗?“链接”是一个带有多个URL的向量(例如欧足联网站上的迭戈·科斯塔和其他西班牙球员的网页)。我想结合“比赛日志”将所有玩家的表合并为一个,并在数据框中添加一个玩家的名称[链接]:欢迎您这样做!一个更具重现性的转义将让您了解如何使用Lappy优化整个操作,同时尝试在包含Diego Costa的your line的
all_表[[i]]的
链接
变量上运行代码感谢您的帮助。如果要从页面顶部提取名称(选择器“.bigTitle”)?我编辑了响应以从顶部提取名称。谢谢Chris,太好了
library(stringr)

c('http://www.uefa.com/teamsandplayers/players/player=1900730/profile/index.html',
  'http://www.uefa.com/teamsandplayers/players/player=250078460/profile/index.html',
  'http://www.uefa.com/teamsandplayers/players/player=250045034/profile/index.html') -> links

namefind <- function(text){
    str_extract(string = text, pattern = "Name.+Position") -> xx
    substr(xx, start = 6, stop = nchar(xx)) -> u
    u
}

length_links <- length(links)
all_tables <- vector("list",length_links)
for(i in seq_len(length_links)){
    html(links[i])  -> q
    html_table(q, fill = TRUE)-> tableList
    if(length(tableList) == 0) next
    for(cc in 1:length(tableList)){
        if(all(colnames(tableList[[cc]])[1:3] == c("Date", "Competition", "Phase"))) {
            all_tables[[i]] <- tableList[[cc]]
            all_tables[[i]]$name <- html_text(html_node(q, css = '.bigTitle'))
        }
    }
}

do.call(rbind, all_tables) -> k
k[k$Date != "The home team is listed first.",] -> k