Rotiranje proxyja u httr-u jezika R i parsiranje preuzetog HTML-a
Mijenjajte redove proxyja pri svakom httr zahtjevu i prosljeđujte preuzete bajtove u xml2 i rvest.
Zadržite odabir proxyja u samoj operaciji preuzimanja. Kad httr vrati stranicu, parsirajte bajtove tog odgovora umjesto da URL prosljeđujete drugom preuzimatelju.
Uz vektor urls i neprazan data frame proxies sa stupcima host i cjelobrojnog 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 zahtjeve javnih stranica dopuštene kroz javne posrednike, popis HTTP proxyja daje kandidate za stupce host i port. Indeks kruži od prvog do posljednjeg retka proxyja i vraća se na početak. Svaki poziv ima vlastitu konfiguraciju proxyja; R proces može nastaviti raditi.
Dobivene stranice sadrže parsirane HTML dokumente. Primijenite rvest::html_elements i potrebne funkcije izdvajanja na te dokumente. Prosljeđivanje URL-a u read_html pokrenulo bi novo preuzimanje s vlastitom mrežnom konfiguracijom tog puta.
Za autentificirane proxyje proslijedite odabrani račun kroz argumente username i password funkcije use_proxy. Druga krajnja točka ne jamči drugu javnu izlaznu IP adresu, pa odaberite bazen prema stvarnom izlaznom ponašanju usluge.