我正在嘗試從 transfermarkt 為玩家抓取內容,其中各個團隊的 url 幾乎相同,但 url 的 3 部分是動態變化的。
我正在抓取我已經做過的 5 年資料:但這僅適用于一個團隊,我想為所有團隊做這件事。
# make a target url with the relevant year
url_base <- 'https://www.transfermarkt.com/as-trencin/kader/verein/7918/plus/1/galerie/0?saison_id=%d'
map_df(2017:2021, function(i) {
# simple but effective progress indicator
cat(".")
pg <- read_html(sprintf(url_base, i))
data.frame(name=html_text(html_nodes(pg, ".hauptlink a , #yw1_c1")),
date_of_birth=html_text(html_nodes(pg, ".posrela .zentriert , .sort-link")),
market_value=html_text(html_nodes(pg, ".rechts")),
season=i,
stringsAsFactors=FALSE)
}) -> asSquad
每個團隊的 URL 示例:
https://www.transfermarkt.com/**as-trencin**/kader/verein/**7918**/plus/1/galerie/0?saison_id=**2017* *
https://www.transfermarkt.com/**slovan-bratislava**/kader/verein/**540**/plus/1/galerie/0?saison_id=**2019* *
現在,我已經能夠抓取一個團隊 5 年了,但是當 URL 的 3 部分發生變化并且每個團隊一次全部完成時,我該如何抓取呢?
請,歡迎任何建議!謝謝!
uj5u.com熱心網友回復:
就像是:
library(rvest)
teams <- c("as-trencin", "slovan-bratislava")
var2 <- c("7918", "540")
years <- 2017:2018
all <- data.frame()
for (i in 1:length(teams)){
for (year in years) {
url <- paste0("https://www.transfermarkt.com/", teams[i], "/kader/verein/", var2[i],"/plus/1/galerie/0?saison_id=", year)
print(url)
# do.The.Scraping, saveToDataFrame, rBindToMainDataFrame
pg <- read_html(sprintf(url))
asSquad <- data.frame(
name=stringi::stri_trim(html_text(html_nodes(pg, ".hauptlink a , #yw1_c1"))),
date_of_birth=html_text(html_nodes(pg, ".posrela .zentriert , .sort-link")),
market_value=html_text(html_nodes(pg, ".rechts")),
season=year,
stringsAsFactors=FALSE)
asSquad <-asSquad[-1,]
all <- rbind(all, asSquad)
}
}
#> [1] "https://www.transfermarkt.com/as-trencin/kader/verein/7918/plus/1/galerie/0?saison_id=2017"
#> [1] "https://www.transfermarkt.com/as-trencin/kader/verein/7918/plus/1/galerie/0?saison_id=2018"
#> [1] "https://www.transfermarkt.com/slovan-bratislava/kader/verein/540/plus/1/galerie/0?saison_id=2017"
#> [1] "https://www.transfermarkt.com/slovan-bratislava/kader/verein/540/plus/1/galerie/0?saison_id=2018"
如果var2相同的不同team,則添加另一個回圈。
格熱戈日
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/419204.html
標籤:
