Rotér proxier i R's httr og parse den hentede HTML
Skift mellem proxy-rækker ved hver httr-anmodning, og send de hentede bytes videre til xml2 og rvest.
Hold proxyvalget på download-handlingen. Når httr har returneret siden, skal du parse den responses bytes i stedet for at give URL'en videre til en anden downloader.
Givet en vektor urls og en ikke-tom data frame proxies med kolonnerne host og heltals-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"))
}
Til anmodninger om offentlige sider, der er tilladt via offentlige mellemled, leverer HTTP-proxylisten kandidater til data frame-ens host- og port-kolonner. Indekset cykler fra den første proxy-række til den sidste og vender tilbage til starten. Hvert kald har sin egen proxy-konfiguration; R-processen kan fortsætte med at køre.
De resulterende sider indeholder parsede HTML-dokumenter. Anvend rvest::html_elements og de nødvendige udtræksfunktioner på disse dokumenter. Gives en URL i stedet til read_html, startes en ny hentning med den pågældende stis egen netværkskonfiguration.
For autentificerede proxier sendes den valgte konto gennem use_proxy's username- og password-argumenter. Et andet endepunkt garanterer ikke en anden offentlig udgangs-IP, så vælg poolen efter tjenestens faktiske udgangsadfærd.