प्रॉक्सी चयन डाउनलोड क्रिया पर ही रखें। httr के पेज लौटाने के बाद उसी प्रतिक्रिया के बाइट्स पार्स करें, URL को किसी दूसरे डाउनलोडर को देने के बजाय।

एक urls वेक्टर और host तथा पूर्णांक port कॉलम वाला खाली न होने वाला data frame proxies दिया गया है:

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 प्रॉक्सी सूची data frame के host और port कॉलम के लिए उम्मीदवार देती है। इंडेक्स पहली प्रॉक्सी पंक्ति से अंतिम तक घूमता है और फिर शुरुआत पर लौटता है। हर कॉल की अपनी प्रॉक्सी कॉन्फ़िगरेशन होती है; R प्रक्रिया चलती रह सकती है।

परिणामी पेजों में पार्स किए गए HTML दस्तावेज़ होते हैं। उन दस्तावेज़ों पर rvest::html_elements और आवश्यक निष्कर्षण फ़ंक्शन लगाएँ। इसके बजाय read_html को URL देना उस पथ की अपनी नेटवर्क कॉन्फ़िगरेशन के साथ नया फ़ेच शुरू कर देगा।

प्रमाणित प्रॉक्सी के लिए चुना गया खाता use_proxy के username और password आर्ग्युमेंट से भेजें। अलग एंडपॉइंट अलग सार्वजनिक एग्ज़िट IP की गारंटी नहीं देता, इसलिए पूल सेवा के वास्तविक एग्ज़िट व्यवहार के अनुसार चुनें।

संबंधित लेख