R'ın httr paketinde proxy'leri döndürme ve indirilen HTML'i ayrıştırma
Her httr isteğinde proxy satırını değiştir ve indirilen baytları xml2 ile rvest'e aktar.
Proxy seçimini indirme işleminin içinde tut. httr sayfayı döndürdükten sonra URL'yi başka bir indiriciye vermek yerine o yanıtın baytlarını ayrıştır.
Bir urls vektörü ve host ile tamsayı port sütunlarına sahip boş olmayan bir data frame proxies verildiğinde:
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"))
}
Genel aracılar üzerinden izin verilen genel sayfa istekleri için HTTP proxy listesi host ve port sütunlarına aday sağlar. Dizin ilk proxy satırından sonuncuya kadar döner ve sonra başa döner. Her çağrının kendi proxy yapılandırması vardır; R süreci çalışmaya devam edebilir.
Elde edilen sayfalar ayrıştırılmış HTML belgeleri içerir. Bu belgelere rvest::html_elements ile gereken çıkarma işlevlerini uygula. Bunun yerine read_html'e URL vermek, o yolun kendi ağ yapılandırmasıyla yeni bir alma başlatırdı.
Kimlik doğrulamalı proxy'ler için seçilen hesabı use_proxy'nin username ve password argümanlarıyla ilet. Farklı bir uç nokta farklı bir genel çıkış IP'si garanti etmez; bu yüzden havuzu hizmetin gerçek çıkış davranışına göre seç.