Rotar proxys a httr de R i analitzar l'HTML descarregat
Alterna les files de proxys a cada petició httr i passa els bytes descarregats a xml2 i rvest.
Mantingues la selecció de proxy a l'operació de descàrrega. Quan httr hagi retornat la pàgina, analitza els bytes d'aquella resposta en lloc de passar l'URL a un altre descarregador.
Donat un vector urls i un data frame proxies no buit amb columnes host i port enter:
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"))
}
Per a peticions a pàgines públiques permeses a través d'intermediaris públics, la llista de proxys HTTP proporciona candidats per a les columnes host i port. L'índex recorre de la primera fila de proxy a l'última i torna a començar. Cada crida té la seva configuració de proxy; el procés R pot continuar executant-se.
Les pàgines resultants contenen documents HTML analitzats. Aplica rvest::html_elements i les funcions d'extracció necessàries a aquests documents. Passar un URL a read_html iniciaria una recuperació nova amb la configuració de xarxa pròpia d'aquell camí.
Per a proxys autenticats, passa el compte seleccionat mitjançant els arguments username i password de use_proxy. Un punt final diferent no garanteix una IP de sortida pública diferent, així que tria el pool segons el comportament real de sortida del servei.