أبقِ اختيار الوكيل مرتبطًا بعملية التنزيل. بعد أن يعيد httr الصفحة، حلّل بايتات ذلك الرد بدل تمرير الرابط إلى أداة تنزيل أخرى.

بافتراض وجود متجه urls وإطار بيانات غير فارغ 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 ودوال الاستخراج اللازمة على تلك المستندات. أما تمرير رابط إلى read_html فسيبدأ جلبًا جديدًا بإعداد الشبكة الخاص بذلك المسار.

بالنسبة للوكلاء الموثّقين، مرّر الحساب المختار عبر وسيطي اسم المستخدم وكلمة المرور في use_proxy. نقطة نهاية مختلفة لا تضمن عنوان IP خروج عامًا مختلفًا، لذا اختر التجمع وفق سلوك الخروج الفعلي للخدمة.

مقالات ذات صلة