สลับพร็อกซีใน httr ของ R และแยกวิเคราะห์ HTML ที่ดาวน์โหลดมา
สลับแถวพร็อกซีในทุกคำขอ httr และส่งไบต์ที่ดาวน์โหลดไปยัง xml2 และ rvest
เก็บบการเลือกพร็อกซีไว้ในขั้นตอนดาวน์โหลดเอง เมื่อ httr คืนหน้าเว็บมาแล้ว ให้แยกวิเคราะห์ไบต์ของการตอบกลับนั้นแทนการส่ง URL ไปยังตัวดาวน์โหลดอื่น
กำหนดให้มีเวกเตอร์ urls และ data frame proxies ที่ไม่ว่างซึ่งมีคอลัมน์ host และ 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"))
}
สำหรับคำขอหน้าเว็บสาธารณะที่อนุญาตผ่านตัวกลางสาธารณะ รายการพร็อกซี HTTP จัดหาผู้สมัครสำหรับคอลัมน์ host และ port ดัชนีจะวนจากแถวพร็อกซีแรกไปจนถึงแถวสุดท้ายแล้วกลับมาเริ่มต้นใหม่ ทุกการเรียกมีการกำหนดค่าพร็อกซีของตนเอง กระบวนการ R ยังทำงานต่อได้
หน้าที่ได้มาจะมีเอกสาร HTML ที่แยกวิเคราะห์แล้ว ให้ใช้ rvest::html_elements และฟังก์ชันสกัดที่จำเป็นกับเอกสารเหล่านั้น การส่ง URL ให้ read_html แทนจะเริ่มการดึงใหม่ด้วยการกำหนดค่าเครือข่ายของเส้นทางนั้นเอง
สำหรับพร็อกซีที่ต้องยืนยันตัวตน ให้ส่งบัญชีที่เลือกผ่านอาร์กิวเมนต์ username และ password ของ use_proxy ปลายทางที่ต่างกันไม่ได้ยืนยัน IP ขาออกสาธารณะ ที่ต่างกัน ดังนั้นเลือกพูลตามพฤติกรรมขาออกจริงของบริการ