首页 > 解决方案 > 使用 R 创建一个序列以从 url 中抓取文本

问题描述

我正在尝试创建一些代码来抓取在一个赛季中主持过每场 NBA 比赛的官员的姓名。我试图从中抓取的所有 url 的格式都类似,所以我需要一些代码来识别格式和reads官方名称。非常感谢您的帮助!

你会看到:

  1. 下面的第一个版本# extract officials读取标题inactiveofficialsattendance等。

  2. 第二个版本# extract officials在上述每个标题之后阅读文本。

  3. 我需要一些代码来识别多个 url 上的这种格式/模式,并每次都读取官方的名字。

Scott Foster, Ron Garretson,Dedric Taylor在这个特定的 url 示例中:

# get webpage
url = paste0("https://www.basketball-reference.com/boxscores/", "201810160BOS", ".html")
webpage = read_html(url)

# extract officials
data = webpage %>% 
    html_nodes(paste("body > div > div > div > div > strong")) %>%
    html_text()

# extract officials
data = webpage %>% 
    html_nodes(paste("body > div > div > div > div > a")) %>%
    html_text()

标签: rweb-scraping

解决方案


我自己对 R 了解不多,我确信有更好的方法,但也许这可以是一个开始:

library(rvest)


url = paste0("https://www.basketball-reference.com/boxscores/", "201810160BOS", ".html")
webpage = read_html(url)

data = webpage %>% html_nodes(paste("body > div > div > div > div > a"))


urls <- data %>% html_attr("href")
text <- data %>% html_text()

df <- data.frame(urls, text, stringsAsFactors=FALSE)

refs <- df[stringr::str_detect(urls, "referees"),"text"]

这是我得到的结果:从上面的代码:

参考文献 [1] “斯科特·福斯特” “罗恩·加勒森” “德里克·泰勒”


推荐阅读