Rotácia proxy v httr v R a parsovanie stiahnutého HTML
Striedajte riadky proxy pri každej požiadavke httr a odovzdávajte stiahnuté bajty do xml2 a rvest.
Výber proxy držte v samotnej operácii sťahovania. Keď httr vráti stránku, parsujte bajty tejto odpovede namiesto odovzdania URL inému sťahovaču.
Ak máte vektor urls a neprázdny data frame proxies so stĺpcami host a celočíselný port:
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"))
}
Pre požiadavky na verejné stránky povolené cez verejných sprostredkovateľov dodáva zoznam HTTP proxy kandidátov pre stĺpce host a port. Index prechádza od prvého riadku proxy po posledný a vracia sa na začiatok. Každé volanie má vlastnú konfiguráciu proxy; proces R môže pokračovať v behu.
Výsledné stránky obsahujú naparsované HTML dokumenty. Aplikujte na ne rvest::html_elements a potrebné extrakčné funkcie. Odovzdanie URL do read_html by namiesto toho spustilo nové načítanie s vlastnou sieťovou konfiguráciou tejto cesty.
Pri autentizovaných proxy odovzdajte zvolený účet cez argumenty username a password funkcie use_proxy. Iný koncový bod nezaručuje inú verejnú výstupnú IP, preto bazén vyberajte podľa skutočného výstupného správania služby.