Die Proxy-Auswahl gehört zum Download-Vorgang. Nachdem httr die Seite zurückgegeben hat, parse die Bytes dieser Antwort, statt die URL an einen anderen Downloader weiterzugeben.

Gegeben sei ein Vektor urls und ein nicht leeres Data Frame proxies mit den Spalten host und ganzzahligem 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"))
}

Für Anfragen an öffentliche Seiten, die über öffentliche Vermittler erlaubt sind, liefert die HTTP-Proxy-Liste Kandidaten für die Spalten host und port. Der Index läuft vom ersten bis zum letzten Proxy-Datensatz und beginnt danach wieder vorn. Jeder Aufruf hat seine eigene Proxy-Konfiguration; der R-Prozess läuft weiter.

Die resultierenden Seiten enthalten geparste HTML-Dokumente. Wende rvest::html_elements und die benötigten Extraktionsfunktionen auf diese Dokumente an. Würde man stattdessen eine URL an read_html übergeben, startete ein neuer Abruf mit der eigenen Netzwerkkonfiguration dieses Pfads.

Bei authentifizierten Proxys übergibst du das gewählte Konto über die Argumente username und password von use_proxy. Ein anderer Endpunkt garantiert keine andere öffentliche Ausgangs-IP; wähle den Pool daher nach dem tatsächlichen Ausgangsverhalten des Dienstes.

Ähnliche Artikel