Ротирање проксија у httr-у језика R и парсирање преузетог HTML-а
Мењајте ред проксија при сваком httr захтеву и прослеђујте преузете бајтове у xml2 и rvest.
Задржите избор проксија у самој операцији преузимања. Када httr врати страницу, парсирајте бајтове тог одговора уместо да URL прослеђујете другом преузимачу.
Уз вектор urls и непразaн 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 адресу, па одаберите базен према стварном излазном понашању услуге.