Roter proxier i Rs httr og parse den nedlastede HTML-en
Bytt proxy-rad ved hver httr-forespørsel og send de nedlastede bytene videre til xml2 og rvest.
Hold proxyvalget i selve nedlastingsoperasjonen. Når httr har returnert siden, parser du bytene i det svaret i stedet for å sende URL-en videre til en annen nedlaster.
Gitt en vektor urls og en ikke-tom data frame proxies med kolonnene host og heltalls-port:
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"))
}
For forespørsler til offentlige sider som er tillatt gjennom offentlige mellomledd, leverer HTTP-proxylisten kandidater for kolonnene host og port. Indeksen går fra første proxy-rad til den siste og starter deretter på nytt. Hvert kall har sin egen proxy-konfigurasjon; R-prosessen kan fortsette å kjøre.
Sidene som kommer ut, inneholder parsede HTML-dokumenter. Bruk rvest::html_elements og de nødvendige uttrekksfunksjonene på disse dokumentene. Å gi en URL til read_html ville i stedet starte en ny henting med den banens egen nettverkskonfigurasjon.
For autentiserte proxier sender du den valgte kontoen gjennom use_proxys username- og password-argumenter. Et annet endepunkt garanterer ikke en annen offentlig utgangs-IP, så velg utvalget etter tjenestens faktiske utgangsatferd.