Tartsa a proxy kiválasztását a letöltési műveletnél. Miután a httr visszaadta az oldalt, a válasz bájtjait dolgozza fel, ahelyett hogy az URL-t egy másik letöltőnek adná át.

Adott egy urls vektor és egy nem üres proxies data frame host és egész port oszlopokkal:

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"))
}

A nyilvános közvetítőkön keresztül engedélyezett nyilvános oldalak kéréseihez a HTTP proxy lista kínál jelölteket a host és port oszlopokhoz. Az index az első proxysortól az utolsóig halad, majd újrakezdi. Minden hívásnak saját proxykonfigurációja van; az R-folyamat tovább futhat.

Az eredményül kapott oldalak feldolgozott HTML-dokumentumokat tartalmaznak. Alkalmazza rájuk a rvest::html_elements függvényt és a szükséges kinyerő függvényeket. Ha inkább URL-t adna a read_html függvénynek, az adott útvonal saját hálózati konfigurációjával indulna új lekérés.

Hitelesített proxyk esetén a kiválasztott fiókot a use_proxy username és password argumentumain keresztül adja át. Egy másik végpont nem garantál más nyilvános kilépő IP-t, ezért a készletet a szolgáltatás tényleges kilépési viselkedése szerint válassza.

Kapcsolódó cikkek