Starpniekserveru rotācija R httr un lejupielādētā HTML parsēšana
Mainiet starpniekservera rindu katram httr pieprasījumam un nododiet lejupielādētos baitus xml2 un rvest.
Turiet starpniekservera izvēli pašā lejupielādes darbībā. Kad httr ir atgriezis lapu, parsējiet šīs atbildes baitus, nevis nododiet URL citam lejupielādētājam.
Ja ir dots vektors urls un neiztukšots data frame proxies ar kolonnām host un veselu skaitļu 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"))
}
Publisku lapu pieprasījumiem, kas atļauti caur publiskiem starpniekiem, HTTP starpniekserveru saraksts nodrošina kandidātus kolonnām host un port. Indekss riņķo no pirmās starpniekservera rindas līdz pēdējai un pēc tam atgriežas sākumā. Katram izsaukumam ir sava starpniekservera konfigurācija; R process var turpināt darboties.
Iegūtajās lapās ir parsēti HTML dokumenti. Piemērojiet tiem rvest::html_elements un nepieciešamās izguves funkcijas. Ja tā vietā URL nodotu read_html, tiktu sākta jauna iegūšana ar šī ceļa paša tīkla konfigurāciju.
Autentificētiem starpniekserveriem nododiet izvēlēto kontu caur use_proxy argumentiem username un password. Cits galapunkts negarantē citu publisku izejas IP, tāpēc izvēlieties kopu pēc pakalpojuma faktiskās izejas uzvedības.