我一直在玩Rselenium,并從一個URL串列中進行網路抓取。當然,我希望將每個URL的資料合并到一個資料框中。當我這樣做的時候,回傳的資料框架將有資料,以及其他的東西,如"checkStatus","statusClass"等。它相當難以解釋,但我希望這些代碼將有助于更好地解釋它。
remDr < - remoteDriver( remoteServerAddr = "localhost",
埠 = 4444,
browserName = "chrome")
remDr$open()
URL_list <- c("https://www.premierleague.com/players/4183/Ahmed-El-Mohamady/stats?co=1& se=363")
# Webscrape函式
ScrapeDF <- function(link_element) {
# General Stats
link_element < - remDr$findElement(using = "css selector"/span>, ". statappearances")。
外觀 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statwins")。
Wins <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statlosses")。
損失<- 作為。 character(link_element$getElementText())
#Defence Stats[/span]。
link_element < - remDr$findElement(using = "css selector"。 ". statclean_sheet")。
CleanSheet <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statgoals_conceded")。
丟了<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_tackle")。
攻克<- 為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattackle_success")。
SuccessfulTackle <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statlast_man_tackle")。
LastManTackle <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statblocked_scoring_att")。
BlockedShots <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 "。 statinterception")。
攔截 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_clearance")。
清除<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stateffective_head_clearance")。
HeadedClearance <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statclearance_off_line")。
ClearanceOffLine <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statball_recovery")。
恢復 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statduel_won")。
DuelsWon <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statduel_lost")。
DuelsLost <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statwon_contest")。
Successful5050 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataerial_won")。
AerialWon <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataerial_lost")。
AerialLost <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statown_goals")。
OwnGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". staterror_lead_to_goal")。
ErrorsToGoal <- as. character(link_element$getElementText())
#Team Play Stats
link_element < - remDr$findElement(using = "css selector"。 ". statgoal_assist")。
助攻<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_pass")。
傳遞<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_pass_per_game")。
PassperMatch <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statbig_chance_created")。
BigChanceCreated <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_cross")。
越過<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statcross_accuracy")。
CrossAcc <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_through_ball")。
ThroughBall <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataccurate_long_balls")。
LongBall <- 作為。 character(link_element$getElementText())
#Discipline Stats[/span
link_element < - remDr$findElement(using = "css selector", ". statyellow_card")。
YelCard <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statred_card")。
紅卡 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statfouls")。
犯規<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_offside")。
越位 <- 作為。 character(link_element$getElementText())
#Attack stats
link_element < - remDr$findElement(using = "css selector"。 ". statgoals")。
目標 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statatt_hd_goal")。
HeadedGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 "。 statatt_rf_goal")。
RightFootGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statatt_lf_goal")。
LeftFootGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stathit_woodwork")。
木工 <- 作為。 character(link_element$getElementText())
DF_Compiled <- data. frame("Position" = text, "Appearance" = Appearance,
"Wins" = Wins, "loses" = Losses, "目標" =目標,"HeadedGoals" = HeadedGoal。 "RightFootGoal" = RightFootGoal,
"LeftFootGoal" = LeftFootGoal。 "Woodwork" = Woodwork,
"YellowCard" = YelCard。 "RedCard" = RedCard,
"犯規" =犯規, "越位" = 越位。 "Assist" =Assists, "Assist" =Assists,
"傳球" =傳球。 "PassperMatch" = PassperMatch。 "BigChanceCreated" = BigChanceCreated,
"Crosses" = Crosses。 "CrossAcc" = CrossAcc。 "ThroughBall" = ThroughBall,
"AccLongBall" = LongBall。 "CleanSheet" = CleanSheet,/span>
"Conceded" = Conceded。 "Tackles" = Tackles,
"SuccessTackle" = SuccessfulTackle, "LastManTackle" = LastManTackle,
"BlockedShots" = BlockedShots, "Interceptions" = Interceptions,
"清除" = 清除。 "HeadedClearance" = HeadedClearance,
"OffLineClearance" = ClearanceOffLine。 "Recoveries" = Recovery,
"DuelsWon" = DuelsWon。 "DuelsLost" = DuelsLost,
"Successful50_50" = Successful5050, "AerialWon" = AerialWon,
"AerialLost" = AerialLost, "OwnGoal" = OwnGoal,
"ErrorsToGoal" =ErrorsToGoal)
}
## For loop to webscrape 回圈。
CompletePlayerData <- data. frame(matrix(nrow = 0。 ncol = 0))
#looping function of scraping the stats for all the players。
for (url in URL_list) {>
remDr$navigate(url)
Sys.sleep(4)
位置< -remDr$findElement(using = "css selector"。 ". info")。
文本 <- 作為。 character(Position$getElementText())
if(Text == "defender"){
saved_list <- lapply(Position, ScrapeDF)
} else {>
位置< - remDr$findElement(using = "css selector", ". info~ .info")。
文本 <- 作為。 character(Position$getElementText())
if(Text == "defender"){
saved_list <- lapply(Position, ScrapeDF)
}
}
CompletePlayerData <- bind_rows(CompletePlayerData, saved_list)
}。
這將回傳一個有900個列的資料框架,像這樣
checkError.Position ... checkStatus.Position ... nativeEvents.Appearance ...
Defender ... 捍衛者 ... 14 ...
所以我的問題是:
我的問題是
我想提前為冗長的代碼道歉
uj5u.com熱心網友回復:library(RSelenium)
library(tidyverse)
remDr <- remoteDriver( remoteServerAddr = "localhost",
埠 = 4444,
browserName = "chrome")
remDr$open()
URL_list <- c("https://www.premierleague.com/players/4183/Ahmed-El-Mohamady/stats?co=1& se=363")
# Webscrape函式
ScrapeDF <- function(link_element) {
# General Stats
link_element < - remDr$findElement(using = "css selector"/span>, ". statappearances")。
外觀 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statwins")。
Wins <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statlosses")。
損失<- 作為。 character(link_element$getElementText())
#Defence Stats[/span]。
link_element < - remDr$findElement(using = "css selector"。 ". statclean_sheet")。
CleanSheet <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statgoals_conceded")。
丟了<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_tackle")。
攻克<- 為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattackle_success")。
SuccessfulTackle <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statlast_man_tackle")。
LastManTackle <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statblocked_scoring_att")。
BlockedShots <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 "。 statinterception")。
攔截 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_clearance")。
清除<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stateffective_head_clearance")。
HeadedClearance <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statclearance_off_line")。
ClearanceOffLine <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statball_recovery")。
恢復 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statduel_won")。
DuelsWon <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statduel_lost")。
DuelsLost <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statwon_contest")。
Successful5050 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataerial_won")。
AerialWon <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataerial_lost")。
AerialLost <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statown_goals")。
OwnGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". staterror_lead_to_goal")。
ErrorsToGoal <- as. character(link_element$getElementText())
#Team Play Stats
link_element < - remDr$findElement(using = "css selector"。 ". statgoal_assist")。
助攻<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_pass")。
傳遞<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_pass_per_game")。
PassperMatch <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statbig_chance_created")。
BigChanceCreated <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_cross")。
越過<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statcross_accuracy")。
CrossAcc <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_through_ball")。
ThroughBall <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stataccurate_long_balls")。
LongBall <- 作為。 character(link_element$getElementText())
#Discipline Stats[/span
link_element < - remDr$findElement(using = "css selector", ". statyellow_card")。
YelCard <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statred_card")。
紅卡 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statfouls")。
犯規<- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stattotal_offside")。
越位 <- 作為。 character(link_element$getElementText())
#Attack stats
link_element < - remDr$findElement(using = "css selector"。 ". statgoals")。
目標 <- 作為。 character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statatt_hd_goal")。
HeadedGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 "。 statatt_rf_goal")。
RightFootGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". statatt_lf_goal")。
LeftFootGoal <- as. character(link_element$getElementText())
link_element < - remDr$findElement(using = "css selector"。 ". stathit_woodwork")。
木工 <- 作為。 character(link_element$getElementText())
DF_Compiled <- data. frame("Position" = text, "Appearance" = Appearance,
"Wins" = Wins, "loses" = Losses, "目標" =目標,"HeadedGoals" = HeadedGoal。 "RightFootGoal" = RightFootGoal,
"LeftFootGoal" = LeftFootGoal。 "Woodwork" = Woodwork,
"YellowCard" = YelCard。 "RedCard" = RedCard,
"犯規" =犯規, "越位" = 越位。 "Assist" =Assists, "Assist" =Assists,
"傳球" =傳球。 "PassperMatch" = PassperMatch。 "BigChanceCreated" = BigChanceCreated,
"Crosses" = Crosses。 "CrossAcc" = CrossAcc。 "ThroughBall" = ThroughBall,
"AccLongBall" = LongBall。 "CleanSheet" = CleanSheet,/span>
"Conceded" = Conceded。 "Tackles" = Tackles,
"SuccessTackle" = SuccessfulTackle, "LastManTackle" = LastManTackle,
"BlockedShots" = BlockedShots, "Interceptions" = Interceptions,
"清除" = 清除。 "HeadedClearance" = HeadedClearance,
"OffLineClearance" = ClearanceOffLine。 "Recoveries" = Recovery,
"DuelsWon" = DuelsWon。 "DuelsLost" = DuelsLost,
"Successful50_50" = Successful5050, "AerialWon" = AerialWon,
"AerialLost" = AerialLost, "OwnGoal" = OwnGoal,
"ErrorsToGoal" =ErrorsToGoal)
}
## For loop to webscrape 回圈。
CompletePlayerData <- tibble()
#looping function of scraping the stats for all the players
for (url in URL_list) {>
remDr$navigate(url)
Sys.sleep(4)
位置< -remDr$findElement(using = "css selector"。 ". info")。
文本 <- 作為。 character(Position$getElementText())
if(Text == "defender"){
# 如果呼叫失敗,回傳一個空串列。
saved_list < - lapply(Position, possibly(ScrapDF, list())
}
new_data <- tibble()
位置= 位置%> % list(),
文本 = Text,
saved_list = saved_list %>% list()
)
CompletePlayerData <- bind_rows(CompletePlayerData, new_data)
}
CompletePlayerData %>%
select(saved_list) %>%
unnest(saved_list) %>%
unnest(saved_list) %>%
distinct(Position, Goals, Appearance)
輸出:
# A tibble: 1 x 3
位置外觀目標
<fct> < fct> <fct>
1后衛14 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331288.html
標籤:
