Rotar proxies en httr de R y analizar el HTML descargado
Alterna filas de proxy en cada solicitud httr y pasa los bytes descargados a xml2 y rvest.
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.