Mantén la selección de proxy en la operación de descarga. Cuando httr devuelva la página, analiza los bytes de esa respuesta en lugar de pasar la URL a otro descargador.

Dado un vector urls y un data frame proxies no vacío con columnas host y port entero:

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"))
}

Para solicitudes de páginas públicas permitidas a través de intermediarios públicos, la lista de proxies HTTP aporta candidatos para las columnas host y port. El índice recorre desde la primera fila de proxy hasta la última y vuelve a empezar. Cada llamada tiene su propia configuración de proxy; el proceso de R puede seguir ejecutándose.

Las páginas resultantes contienen documentos HTML analizados. Aplica rvest::html_elements y las funciones de extracción necesarias a esos documentos. Pasar una URL a read_html iniciaría una recuperación nueva con la configuración de red propia de esa ruta.

Para proxies autenticados, pasa la cuenta elegida mediante los argumentos username y password de use_proxy. Un endpoint distinto no garantiza una IP de salida pública distinta, así que elige el grupo según el comportamiento real de salida del servicio.

Artículos relacionados