R-এর httr-এ প্রক্সি ঘোরানো এবং ডাউনলোড করা HTML পার্স করা
প্রতিটি httr অনুরোধে প্রক্সি সারি ঘুরিয়ে নিন এবং ডাউনলোড করা বাইট xml2 ও rvest-এ পাঠান।
প্রক্সি নির্বাচন ডাউনলোড ক্রিয়ার মধ্যেই রাখুন। httr পৃষ্ঠাটি ফেরত দেওয়ার পর URL অন্য ডাউনলোডারে না পাঠিয়ে সেই প্রতিক্রিয়ার বাইট পার্স করুন।
একটি urls ভেক্টর এবং host ও integer 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-তে পাঠান। ভিন্ন এন্ডপয়েন্ট ভিন্ন পাবলিক exit IP নিশ্চিত করে না, তাই পরিষেবার প্রকৃত exit আচরণ অনুযায়ী পুল বাছুন।