Εναλλαγή διακομιστών μεσολάβησης στο httr της R και ανάλυση του HTML που κατέβηκε
Αλλάξτε σειρά διακομιστή μεσολάβησης σε κάθε αίτημα httr και περάστε τα bytes που κατέβηκαν στα xml2 και rvest.
Κρατήστε την επιλογή διακομιστή μεσολάβησης στη λειτουργία λήψης. Αφού το httr επιστρέψει τη σελίδα, αναλύστε τα bytes εκείνης της απόκρισης αντί να περάσετε το 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 εξόδου, οπότε επιλέξτε τη δεξαμενή με βάση την πραγματική συμπεριφορά εξόδου της υπηρεσίας.