如何向抓取的 Web 表的数据添加变量

How to add variable to data of scraped web tables

我想从 UEFA 网站 (like this one) 的几个页面中抓取 tables 并尝试将其合并到一个数据框中。数据框应该包含单个玩家页面上的所有信息(table "MATCH LOG")加上带有玩家名称的列(变量)。

Chris 的解决方案工作正常,但我想从页面顶部(选择器'.bigTitle')而不是框 "GENERAL INFO" 获取玩家的名字。

我制作数据框的代码:

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)

非常感谢你的帮助。

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