Vrtenje proxyjev v httr jezika R in razčlenjevanje prenesenega HTML
Zamenjajte vrstico proxyja pri vsaki zahtevi httr in posredujte prenesene bajte v xml2 in rvest.
Izbira proxyja naj ostane v sami operaciji prenosa. Ko httr vrne stran, razčlenite bajte tega odgovora, namesto da URL posredujete drugemu prenašalniku.
Če imate vektor urls in neprazen data frame proxies s stolpcema host in celoštevilski 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"))
}
Za zahteve javnih strani, dovoljene prek javnih posrednikov, seznam proxyjev HTTP zagotavlja kandidate za stolpca host in port. Kazalo kroži od prve vrstice proxyja do zadnje in se vrne na začetek. Vsak klic ima svojo konfiguracijo proxyja; proces R lahko nadaljuje z delovanjem.
Nastale strani vsebujejo razčlenjene dokumente HTML. Na te dokumente uporabite rvest::html_elements in potrebne funkcije za pridobivanje. Posredovanje URL v read_html bi namesto tega začelo novo pridobivanje z lastno omrežno konfiguracijo te poti.
Pri overjenih proxyjih posredujte izbrani račun prek argumentov username in password funkcije use_proxy. Druga končna točka ne zagotavlja drugega javnega izhodnega IP, zato izberite nabor glede na dejansko izhodno vedenje storitve.