首页 > 解决方案 > 如何从 HTML 网页中选择特定单词以附加到 R 中的数据框?

问题描述

我正在构建这个刮板来从这个网页中提取比赛数据:https : //www.basketball-reference.com/boxscores/201410280LAL.html 刮板会为这场比赛拉取主客队的所有信息,但不表明球员只为他们的名字和数据而效力的球队的实际名称

下面是我到目前为止的刮板,它为主客队和客队提取基本和高级统计数据,将其塑造成一个数据框并丢弃不是球员姓名及其统计数据或球队总数的行,并将适当的列转换为它们各自的变量类型。

library(rvest)
library(xml2)
library(purrr)
library(dplyr)
url <- "https://www.basketball-reference.com/boxscores/201410280LAL.html"
webpage <- read_html(url)
tbls <- webpage %>% html_nodes("table") %>% html_table(header = FALSE, fill = TRUE) 
tbls <- tbls %>% lmap( ~ set_names(.x, nm = pluck(.x, 1, 1, 1))) %>% map(~ set_names(.x, nm = .x[2, ]))
awaybas <- tbls %>% .[1]
awayadv <- tbls %>% .[2] 
homebas <- tbls %>% .[3] 
homeadv <- tbls %>% .[4] 
ab1 <- as.data.frame(awaybas)
aa1 <- as.data.frame(awayadv)
hb1 <- as.data.frame(homebas)
ha1 <- as.data.frame(homeadv)
ab <- ab1[-c(1,2,8),]
aa <- aa1[-c(1,2,8),]
hb <- hb1[-c(1,2,8),]
ha <- ha1[-c(1,2,8),]
ab[,c(3:21)] <- sapply(ab[,c(3:21)], as.numeric)
aa[,c(3:16)] <- sapply(aa[,c(3:16)], as.numeric)
hb[,c(3:21)] <- sapply(hb[,c(3:21)], as.numeric)
ha[,c(3:16)] <- sapply(ha[,c(3:16)], as.numeric)

这段代码运行良好,但我想提取团队名称缩写并将它们添加到各自的数据帧中(对于这个游戏,它将是 HOU 和 LAL)但我不确定如何从 HTML 网页的其他部分提取这些信息

标签: htmlrdataframe

解决方案


快速浏览网站并假设您感兴趣的所有 html 页面具有相同的结构后,我认为这可能会解决您的问题:

abbr <- webpage %>% 
  html_nodes('strong') %>% 
  html_text() %>% 
  .[5:6] 

推荐阅读