Pertahankan pemilihan proxy pada operasi unduh. Setelah httr mengembalikan halaman, uraikan byte respons itu alih-alih meneruskan URL ke pengunduh lain.

Diberikan vektor urls dan data frame proxies tidak kosong dengan kolom host dan port bilangan bulat:

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

Untuk permintaan halaman publik yang diizinkan melalui perantara publik, daftar proxy HTTP menyediakan kandidat untuk kolom host dan port. Indeks berputar dari baris proxy pertama hingga terakhir lalu kembali ke awal. Setiap panggilan punya konfigurasi proxy sendiri; proses R dapat terus berjalan.

Halaman yang dihasilkan berisi dokumen HTML yang telah diurai. Terapkan rvest::html_elements dan fungsi ekstraksi yang diperlukan pada dokumen tersebut. Meneruskan URL ke read_html justru akan memulai pengambilan baru dengan konfigurasi jaringan jalur itu sendiri.

Untuk proxy terautentikasi, teruskan akun yang dipilih melalui argumen username dan password use_proxy. Endpoint berbeda tidak menjamin IP keluar publik yang berbeda, jadi pilih kumpulan sesuai perilaku keluar layanan yang sebenarnya.

Artikel terkait