Ротация на прокси сървъри в httr на R и анализ на изтегления HTML
Сменяйте редовете на прокситата при всяка заявка през httr и подавайте изтеглените байтове към xml2 и rvest.
Дръжте избора на прокси в операцията по изтегляне. След като httr върне страницата, анализирайте байтовете на този отговор, вместо да подавате URL към друг изтеглящ инструмент.
При даден вектор urls и непразен data frame proxies с колони host и целочислен 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"))
}
За заявки към публични страници, разрешени през публични посредници, списъкът с HTTP проксита доставя кандидати за колоните host и port. Индексът се върти от първия ред на проксито до последния и се връща в началото. Всяко извикване има собствена конфигурация на прокси; процесът на R може да продължи да работи.
Получените страници съдържат анализирани HTML документи. Приложете rvest::html_elements и нужните функции за извличане към тези документи. Подаването на URL към read_html вместо това би стартирало ново изтегляне със собствена мрежова конфигурация на този път.
За удостоверени проксита подайте избрания акаунт чрез аргументите username и password на use_proxy. Различна крайна точка не гарантира различен публичен изходен IP, затова избирайте пула според действителното изходно поведение на услугата.