Giữ việc chọn proxy trong chính thao tác tải. Sau khi httr trả về trang, hãy phân tích các byte của phản hồi đó thay vì chuyển URL cho một trình tải khác.

Cho một vectơ urls và một data frame proxies không rỗng với các cột host và port kiểu số nguyên:

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

Với các yêu cầu tới trang công khai được cho phép qua trung gian công khai, danh sách proxy HTTP cung cấp ứng viên cho các cột host và port. Chỉ số chạy từ dòng proxy đầu tiên tới dòng cuối rồi quay lại đầu. Mỗi lời gọi có cấu hình proxy riêng; tiến trình R có thể tiếp tục chạy.

Các trang thu được chứa tài liệu HTML đã phân tích. Hãy áp dụng rvest::html_elements và các hàm trích xuất cần thiết lên các tài liệu đó. Chuyển URL cho read_html thay vào đó sẽ khởi động một lần tải mới với cấu hình mạng riêng của đường dẫn ấy.

Với proxy có xác thực, hãy truyền tài khoản đã chọn qua các đối số username và password của use_proxy. Một endpoint khác không bảo đảm một IP thoát công khai khác, nên hãy chọn nhóm theo hành vi thoát thực tế của dịch vụ.

Bài viết liên quan