我正在嘗試使用 R 從 PGA 網站中提取球員照片。以下是我獲取影像 URL 的嘗試,但它不顯示影像或影像為空白,如下圖所示。
if(!require(pacman))install.packages("pacman")
pacman::p_load('rvest', 'stringi', 'dplyr', 'tidyr', 'measurements', 'reshape2','foreach','doParallel','curl','httr','Iso','stringi','janitor')
PGA_url <- "https://www.pgatour.com"
pga_web=read_html(paste0(PGA_url,'/players.html'))
plyers_photo <- pga_web%>%html_nodes("[class='player-card']")%>%html_nodes('div.player-image-wrapper')%>%html_nodes('img')%>%html_attr('src')

有人可以告訴我我做錯了什么嗎?
uj5u.com熱心網友回復:
如果您檢查頁面源,您將看到您正在根據頁面源檢索內容,即有默認img值的地方。掃一掃,您可能會注意到有一個data-src相鄰的屬性,它具有匹配正則運算式的 png 格式的備用結尾:headshots_\d{5}\.png。
當 JavaScript 在瀏覽器中運行時,通過 rvest 的 xmlhttp 請求不會發生這種情況,這些 url 會動態更新,默認 png 結尾替換為data-src屬性中的結尾。
對于設定大小的小影像,要么使用該屬性的值替換您獲得的結尾,要么使用該部分upload作為基礎,并將其與提取的data-src值組合以提供大影像。
也不需要所有這些鏈接html_nodes()呼叫。使用適當的 css 選擇器串列進行一次呼叫即可。此外,更喜歡維護的html_elements()方法,而不是舊的html_nodes():
library(rvest)
library(magrittr)
PGA_url <- "https://www.pgatour.com"
pga_web <- read_html(paste0(PGA_url, "/players.html"))
placeholder_link <- 'https://pga-tour-res.cloudinary.com/image/upload/'
plyers_photo <- pga_web %>%
html_elements(".player-card .player-image-wrapper img") %>%
html_attr("data-src") %>% paste0(placeholder_link, .)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361678.html
