Создание функции, которая перебирает номера страниц - PullRequest
0 голосов
/ 19 июня 2020

У меня есть сценарий для импорта данных, который выглядит следующим образом:

library(tidyverse)
library(rvest)
library(magrittr)

page_number <- 1:20

base_url <- read_html("https://247sports.com/Season/2021-Football/CompositeRecruitRankings/?ViewPath=~%2FViews%2FSkyNet%2FPlayerSportRanking%2F_SimpleSetForSeason.ascx&Page=1")

rankings <- base_url %>% html_nodes(".meta , .score , .position , .rankings-page__name-link") %>%
  html_text() %>% 
  str_trim %>% 
  str_split("   ") %>% 
  unlist %>%
  matrix(ncol = 4, byrow = T) %>% 
  as.data.frame

Вы заметите, что base_url в самом конце включает &Page=1. Что ж, я пытаюсь сделать это для 20 страниц, поэтому:

page_number <- 1:20

Что было бы наиболее эффективным способом l oop этих чисел в URL-адресе, не имея написать 20 разных наборов кода?

1 Ответ

1 голос
/ 19 июня 2020

Вы можете использовать paste0 или sprintf для создания всех URL-адресов.

all_urls <- paste0("https://247sports.com/Season/2021-Football/CompositeRecruitRankings/?ViewPath=~%2FViews%2FSkyNet%2FPlayerSportRanking%2F_SimpleSetForSeason.ascx&Page=", 1:20)

Затем вы можете перебирать каждый URL-адрес и извлекать необходимые данные.

library(tidyverse)
library(rvest)

rankings <- map(all_urls, ~.x %>% read_html %>%
            html_nodes(".meta , .score , .position , .rankings-page__name-link") %>%
            html_text() %>% 
            str_trim %>% 
            str_split("   ") %>% 
            unlist %>%
            matrix(ncol = 4, byrow = T) %>% 
            as.data.frame)
...