Tarpinių serverių rotacija R httr bibliotekoje ir atsisiųsto HTML analizė
Keiskite tarpinio serverio eilutę prie kiekvienos httr užklausos ir perduokite atsisiųstus baitus xml2 bei rvest.
Tarpinio serverio pasirinkimą laikykite pačioje atsisiuntimo operacijoje. Kai httr grąžina puslapį, analizuokite to atsakymo baitus, o ne perduokite URL kitam atsisiuntėjui.
Turint vektorių urls ir netuščią data frame proxies su stulpeliais host ir sveikojo skaičiaus 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"))
}
Viešų puslapių užklausoms, leidžiamoms per viešus tarpininkus, HTTP tarpinių serverių sąrašas pateikia kandidatus host ir port stulpeliams. Indeksas sukasi nuo pirmos tarpinio serverio eilutės iki paskutinės ir vėl grįžta į pradžią. Kiekvienas kvietimas turi savo tarpinio serverio konfigūraciją; R procesas gali toliau veikti.
Gautuose puslapiuose yra išanalizuoti HTML dokumentai. Taikykite jiems rvest::html_elements ir reikiamas išgavimo funkcijas. Jei vietoj to URL perduotumėte read_html, būtų pradėtas naujas gavimas su tos kelio savo tinklo konfigūracija.
Autentifikuotiems tarpiniams serveriams pasirinktą paskyrą perduokite per use_proxy argumentus username ir password. Kita prieigos vieta negarantuoja kito viešo išėjimo IP, todėl telkinį rinkitės pagal tikrąjį paslaugos išėjimo elgesį.