프록시 선택은 다운로드 작업 안에 두십시오. 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 프록시 목록이 host와 port 열의 후보를 제공합니다. 인덱스는 첫 프록시 행에서 마지막 행까지 돌고 다시 처음으로 돌아갑니다. 호출마다 자체 프록시 설정이 있으며 R 프로세스는 계속 실행될 수 있습니다.

얻어진 페이지에는 파싱된 HTML 문서가 들어 있습니다. 그 문서에 rvest::html_elements와 필요한 추출 함수를 적용하십시오. 대신 URL을 read_html에 넘기면 해당 경로 자체의 네트워크 설정으로 새 가져오기가 시작됩니다.

인증 프록시의 경우 선택한 계정을 use_proxy의 username과 password 인수로 넘깁니다. 다른 엔드포인트가 다른 공인 출구 IP를 보장하지는 않으므로 서비스의 실제 출구 동작에 맞춰 풀을 고르십시오.

관련 글