Rotar proxies en httr de R e analizar o HTML descargado
Alterna filas de proxy en cada solicitude httr e pasa os bytes descargados a xml2 e rvest.
Mantén a selección de proxy na operación de descarga. Cando httr devolva a páxina, analiza os bytes desa resposta en lugar de pasar a URL a outro descargador.
Dado un vector urls e un data frame proxies non baleiro con columnas host e port enteiro:
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áxinas públicas permitidas a través de intermediarios públicos, a lista de proxies HTTP fornece candidatos para as columnas host e port. O índice percorre desde a primeira fila de proxy ata a última e volve comezar. Cada chamada ten a súa propia configuración de proxy; o proceso R pode seguir executándose.
As páxinas resultantes conteñen documentos HTML analizados. Aplica rvest::html_elements e as funcións de extracción necesarias a eses documentos. Pasar unha URL a read_html iniciaría unha nova recuperación coa configuración de rede propia desa ruta.
Para proxies autenticados, pasa a conta escollida mediante os argumentos username e password de use_proxy. Un endpoint distinto non garante unha IP de saída pública distinta, así que escolle o conxunto segundo o comportamento real de saída do servizo.