Rotace proxy v httr v R a parsování staženého HTML
Střídejte řádky proxy při každém požadavku httr a předávejte stažené bajty do xml2 a rvest.
Výběr proxy držte v operaci stahování. Když httr vrátí stránku, parsujte bajty této odpovědi, místo abyste URL předávali jinému stahovači.
Máte-li vektor urls a neprázdný data frame proxies se sloupci host a celočíselný 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"))
}
Pro požadavky na veřejné stránky povolené přes veřejné prostředníky dodává seznam HTTP proxy kandidáty pro sloupce host a port. Index prochází od prvního řádku proxy k poslednímu a vrací se na začátek. Každé volání má vlastní konfiguraci proxy; proces R může pokračovat v běhu.
Výsledné stránky obsahují naparsované HTML dokumenty. Na tyto dokumenty aplikujte rvest::html_elements a potřebné extrakční funkce. Předání URL do read_html by místo toho spustilo nové načtení s vlastní síťovou konfigurací dané cesty.
U autentizovaných proxy předejte zvolený účet přes argumenty username a password funkce use_proxy. Jiný koncový bod nezaručuje jinou veřejnou výstupní IP, proto pool vybírejte podle skutečného výstupního chování služby.