Rotera proxyservrar i Rs httr och tolka den nedladdade HTML-koden
Byt proxyrad vid varje httr-begäran och skicka de nedladdade byten vidare till xml2 och rvest.
Håll proxyvalet i själva nedladdningen. När httr har returnerat sidan tolkar du byten i det svaret i stället för att skicka URL:en vidare till en annan nedladdare.
Givet en vektor urls och en icke-tom data frame proxies med kolumnerna host och heltalsport:
pages <- vector("list", length(urls))
stopifnot(nrow(proxies) > 0L)
for (i in seq_along(urls)) {
row <- ((i - 1L) %% nrow(proxies)) + 1L
response <- httr::GET(
urls[[i]],
httr::use_proxy(proxies$host[[row]], proxies$port[[row]]),
httr::timeout(30)
)
httr::stop_for_status(response)
pages[[i]] <- xml2::read_html(httr::content(response, as = "raw"))
}
För begäranden till offentliga sidor som tillåts via offentliga mellanhänder levererar HTTP-proxylistan kandidater för kolumnerna host och port. Indexet går från första proxyraden till den sista och börjar sedan om från början. Varje anrop har sin egen proxykonfiguration; R-processen kan fortsätta köra.
Sidorna som kommer ut innehåller tolkade HTML-dokument. Använd rvest::html_elements och de uttagsfunktioner som behövs på dessa dokument. Att ge en URL till read_html skulle i stället starta en ny hämtning med den sökvägens egen nätverkskonfiguration.
För autentiserade proxyservrar skickar du det valda kontot via use_proxys argument username och password. En annan slutpunkt garanterar inte en annan offentlig utgående IP, så välj poolen efter tjänstens faktiska utgående beteende.