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.

Související články