Ратацыя проксі ў 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, таму выбірайце пул паводле рэальных паводзінаў сэрвісу на выхадзе.