Rotirea proxy-urilor în httr din R și analizarea HTML-ului descărcat
Schimbă rândul de proxy la fiecare cerere httr și transmite octeții descărcați către xml2 și rvest.
Păstrează alegerea proxy-ului în operația de descărcare. După ce httr returnează pagina, analizează octeții acelui răspuns în loc să transmiți URL-ul altui descărcător.
Fiind date un vector urls și un data frame proxies nevid cu coloanele host și port întreg:
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"))
}
Pentru cererile către pagini publice permise prin intermediari publici, lista de proxy-uri HTTP oferă candidați pentru coloanele host și port. Indexul parcurge de la primul rând de proxy la ultimul și reia de la început. Fiecare apel are propria configurație de proxy; procesul R poate continua să ruleze.
Paginile rezultate conțin documente HTML analizate. Aplică rvest::html_elements și funcțiile de extragere necesare acelor documente. Trecerea unui URL la read_html ar porni în schimb o nouă preluare cu configurația de rețea proprie a acelei căi.
Pentru proxy-urile autentificate, transmite contul ales prin argumentele username și password ale use_proxy. Un endpoint diferit nu garantează un IP de ieșire public diferit, așa că alege grupul după comportamentul real de ieșire al serviciului.