我正在尝试使用rvest和selectorgadget从多个链接中搜索一些网球统计数据。第一页抓取的是http://www.atpworldtour.com/en/scores/archive/stockholm/429/2017/results,有29个链接看起来像这样:“http://www.atpworldtour.com/en/scores/2017/429/ MS001 / match-stats”。所有链接看起来都相同,但从 MS001-MS029 更改。使用下面的代码,我只得到前9个链接所需的结果。我看到了问题,但不知道如何纠正它。前9个链接为双00,其余为单个0.第10个链接应为MS010。任何帮助都非常赞赏。
library(xml)
library(rvest)
library(stringr)
round <- 1:29
urls <- paste0("http://www.atpworldtour.com/en/scores/2017/429/MS00", round,
"/match-stats")
aces <- function(url) {
url %>%
read_html() %>%
html_nodes(".percent-on:nth-child(3) .match-stats-number-left span") %>%
html_text() %>%
as.numeric()
}
results <- sapply(urls, aces)
results
$`http://www.atpworldtour.com/en/scores/2017/429/MS001/match-stats`
[1] 9
$`http://www.atpworldtour.com/en/scores/2017/429/MS002/match-stats`
[1] 8
$`http://www.atpworldtour.com/en/scores/2017/429/MS003/match-stats`
[1] 5
$`http://www.atpworldtour.com/en/scores/2017/429/MS004/match-stats`
[1] 4
$`http://www.atpworldtour.com/en/scores/2017/429/MS005/match-stats`
[1] 8
$`http://www.atpworldtour.com/en/scores/2017/429/MS006/match-stats`
[1] 9
$`http://www.atpworldtour.com/en/scores/2017/429/MS007/match-stats`
[1] 2
$`http://www.atpworldtour.com/en/scores/2017/429/MS008/match-stats`
[1] 9
$`http://www.atpworldtour.com/en/scores/2017/429/MS009/match-stats`
[1] 5
$`http://www.atpworldtour.com/en/scores/2017/429/MS0010/match-stats`
numeric(0)
答案 0 :(得分:1)
可以通过sprintf()
函数在格式化字符串中生成前导零。
ids <- 1:29
urlList <- sapply(ids,function(x){
sprintf("%s%03d%s","http://www.atpworldtour.com/en/scores/2017/429/MS",
x,"/match-stats")
})
# print a few items
urlList[c(1,9,10,29)]
...和输出:
> urlList[c(1,9,10,29)]
[1] "http://www.atpworldtour.com/en/scores/2017/429/MS001/match-stats"
[2] "http://www.atpworldtour.com/en/scores/2017/429/MS009/match-stats"
[3] "http://www.atpworldtour.com/en/scores/2017/429/MS010/match-stats"
[4] "http://www.atpworldtour.com/en/scores/2017/429/MS029/match-stats"
>