Rotiranje proxyja u httr-u jezika R i parsiranje preuzetog HTML-a
Menjajte red proxyja pri svakom httr zahtevu i prosleđujte preuzete bajtove u xml2 i rvest.
Zadržite izbor proxyja u samoj operaciji preuzimanja. Kada httr vrati stranicu, parsirajte bajtove tog odgovora umesto da URL prosleđujete drugom preuzimaču.
Uz vektor urls i neprazan data frame proxies sa kolonama host i celobrojnog 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"))
}
Za zahteve javnih stranica dozvoljene kroz javne posrednike, lista HTTP proxyja daje kandidate za kolone host i port. Indeks kruži od prvog do poslednjeg reda proxyja i vraća se na početak. Svaki poziv ima sopstvenu konfiguraciju proxyja; R proces može da nastavi sa radom.
Dobijene stranice sadrže parsirane HTML dokumente. Primenite rvest::html_elements i potrebne funkcije izdvajanja na te dokumente. Prosleđivanje URL-a u read_html pokrenulo bi novo preuzimanje sa sopstvenom mrežnom konfiguracijom tog puta.
Za autentifikovane proxyje prosledite izabrani nalog kroz argumente username i password funkcije use_proxy. Druga krajnja tačka ne garantuje drugu javnu izlaznu IP adresu, pa odaberite bazen prema stvarnom izlaznom ponašanju usluge.