Эквивалент while-l oop с purrr :: map - PullRequest
0 голосов
/ 18 января 2020

Я создаю функцию webbscraper и хочу просмотреть несколько страниц. Поскольку я хочу получать данные только в определенный период c, а процесс очистки требует некоторых усилий, так как иногда сайт может перестать работать медленно, я раньше выполнял несколько тестов, и не похоже, что процесс очистки является причиной сайты ведут себя.

Функция очистки:

#Regex filter function to reduce the amount of scraped reports from single pages
target_regex <- "(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| 
(LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Plastic.King)|(organs)|(SILI)|(Electric.Cigarette.Machine)"
all.nodes <- c(".heading-3 a",".paid-amount span", ".date", ".location", ".transaction a")
#Add mutate and add if function to stop scraping after 2018 is reache

scraper_info <- function(pages){
  bribe <- read_html(paste("http://ipaidabribe.com/reports/paid?page", pages, sep = "="))
  map(all.nodes, ~ html_nodes(bribe, .x) %>%
        html_text()) %>%
    as_tibble(.name_repair = "unique") %>%
    filter(str_detect(...1, target_regex, negate = TRUE)) %>%
    mutate(Report =(
            report <- html_nodes(bribe, ".read-more") %>% 
             html_attr("href") %>% 
             as_tibble(.name_repair = "unique") %>% 
             filter(str_detect(value, target_regex, negate = TRUE)) %>% 
             mutate(text = map_chr(value, ~read_html(.x) %>%  
                              html_node(".body-copy-lg") %>% 
                              html_text)))$text)
}


pages <- seq(10, 20, by = 10)
bribe <- map_df(pages, ~scraper_info(.x)) %>% rename(  "Title"= ...1 ,   "Bribe" = ...2, "Date" = ...3,
                                                       "Location" = ...4 , "Department" = ...5 )`

Я хочу остановить карту, когда Дата (... 3 в таблице) не равна 2019. Есть ли что-то похожее на map_ while, чтобы сделать такая вещь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...