Web抓取图像URL,用于ESPN逐次播放中的一系列事件

时间:2019-06-24 15:34:51

标签: r web-scraping espn

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

我正在R上运行它,并且正在使用rvest软件包。我要抓取的网址是https://www.espn.com/mens-college-basketball/playbyplay?gameId=400587906,我正在使用SelectorGadget Chrome扩展程序抓取。我也尝试过将球员的名字与boxscore进行比较,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")

对于每个事件,我希望将其标记为“ Duke”或“ Wake Forest”。

是否可以为每个图像生成URL?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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)

如果您要与其他团队一起进行数百次操作,则不可可扩展,但适用于此特定选项。