Ротирање прокси сервери во 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 адреса, затоа изберете го базенот според вистинското излезно однесување на услугата.