1

我正在尝试使用网络抓取从 ESPN 生成逐个播放数据集。我已经弄清楚了其中的大部分内容,但无法确定该赛事是为哪支球队举办的,因为这只是在 ESPN 上以图像的形式编码的。我想出的解决此问题的最佳方法是获取每个条目的徽标 URL,并将其与页面顶部每个团队的徽标 URL 进行比较。但是,我一直无法弄清楚如何从图像中获取诸如 url 之类的属性。

我在 R 上运行它并且正在使用 rvest 包。我正在抓取的网址是https://www.espn.com/mens-college-basketball/playbyplay?gameId=400587906,我正在使用 SelectorGadget Chrome 扩展程序进行抓取。我还尝试将球员的姓名与列出所有球员的 boxscore 进行比较,但每支球队都有一名姓琼斯的球员,所以我希望能够通过查看图像,因为这将永远是正确的。

library(rvest)
url <- "https://www.espn.com/mens-college-basketball/playbyplay?gameId=400587906"
webpage <- read_html(url)


# have been able to successfully scrape game_details and score
game_details_html <- html_nodes(webpage,'.game-details')
game_details <- html_text(game_details_html) %>% as.character()

score_html <- html_nodes(webpage,'.combined-score')
score <- html_text(score_html)


# have not been able to scrape image    
ImgNode <- html_nodes(webpage, css = "#gp-quarter-1 .team-logo")
link <- html_attr(ImgNode, "src")

对于每个事件,我希望它被标记为“公爵”或“维克森林”。

有没有办法为每个图像生成 URL?任何帮助将不胜感激。

4

1 回答 1

0

" https://a.espncdn.com/combiner/i?img=/i/teamlogos/ncaa/500/150.png&h=100&w=100 " " https://a.espncdn.com/combiner/i?img =/i/teamlogos/ncaa/500/154.png&h=100&w=100 "

您的代码返回这些。500/150 是杜克大学,500/154 是维克森林大学。您可以使用这些创建一个简单的数据框,然后加入这些表。

link_df <- as.data.frame(link)

link_ref_df <- data.frame(link = c("https://a.espncdn.com/combiner/i?img=/i/teamlogos/ncaa/500/150.png&h=100&w=100", "https://a.espncdn.com/combiner/i?img=/i/teamlogos/ncaa/500/154.png&h=100&w=100"),
                             team_name = c("Duke", "Wake Forest"))

link_merged <- merge(link_df, 
                    link_ref_df,
                    by = 'link',
                    all.x = T)

如果您与其他团队一起做数百个这样的事情,这是不可扩展的,但适用于这个特定的选项。

于 2019-06-24T16:11:23.450 回答