Pag-ikot ng mga proxy sa httr ng R at pag-parse ng na-download na HTML
Palitan ang hilera ng proxy sa bawat kahilingang httr at ipasa ang mga na-download na byte sa xml2 at rvest.
Panatilihin ang pagpili ng proxy sa mismong operasyon ng pag-download. Kapag naibalik na ng httr ang pahina, i-parse ang mga byte ng tugon na iyon sa halip na ipasa ang URL sa ibang downloader.
Dahil may vector urls at hindi bakanteng data frame proxies na may mga column na host at integer na 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"))
}
Para sa mga kahilingan sa pampublikong pahina na pinapayagan sa pamamagitan ng mga pampublikong tagapamagitan, ang listahan ng HTTP proxy ay nagbibigay ng mga kandidato para sa mga column na host at port. Umiikot ang index mula sa unang hilera ng proxy hanggang sa huli at bumabalik sa simula. Bawat tawag ay may sariling configuration ng proxy; maaaring magpatuloy ang proseso ng R.
Ang mga resultang pahina ay naglalaman ng mga na-parse na dokumentong HTML. Ilapat ang rvest::html_elements at ang mga kailangang function sa pagkuha sa mga dokumentong iyon. Ang pagpasa ng URL sa read_html sa halip ay magsisimula ng bagong pagkuha gamit ang sariling network configuration ng landas na iyon.
Para sa mga authenticated na proxy, ipasa ang napiling account sa pamamagitan ng mga argumentong username at password ng use_proxy. Ang ibang endpoint ay hindi ginagarantiya ang ibang pampublikong exit IP, kaya piliin ang pool ayon sa aktwal na pag-uugali ng paglabas ng serbisyo.