R ਦੇ httr ਵਿੱਚ ਪ੍ਰੌਕਸੀ ਘੁਮਾਓ ਅਤੇ ਡਾਊਨਲੋਡ ਕੀਤੀ HTML ਪਾਰਸ ਕਰੋ
ਹਰ httr ਬੇਨਤੀ ਉੱਤੇ ਪ੍ਰੌਕਸੀ ਕਤਾਰ ਬਦਲੋ ਅਤੇ ਡਾਊਨਲੋਡ ਕੀਤੇ ਬਾਈਟ xml2 ਅਤੇ rvest ਨੂੰ ਦਿਓ।
ਪ੍ਰੌਕਸੀ ਚੋਣ ਡਾਊਨਲੋਡ ਕਾਰਵਾਈ ਉੱਤੇ ਹੀ ਰੱਖੋ। 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 ਅਤੇ ਲੋੜੀਂਦੇ ਨਿਕਾਸ ਫੰਕਸ਼ਨ ਲਾਗੂ ਕਰੋ। ਇਸ ਦੀ ਥਾਂ read_html ਨੂੰ URL ਦੇਣਾ ਉਸ ਰਾਹ ਦੀ ਆਪਣੀ ਨੈੱਟਵਰਕ ਸੰਰਚਨਾ ਨਾਲ ਨਵੀਂ ਪ੍ਰਾਪਤੀ ਸ਼ੁਰੂ ਕਰ ਦੇਵੇਗਾ।
ਪ੍ਰਮਾਣਿਤ ਪ੍ਰੌਕਸੀ ਲਈ ਚੁਣਿਆ ਖਾਤਾ use_proxy ਦੇ username ਅਤੇ password ਆਰਗਿਊਮੈਂਟਾਂ ਰਾਹੀਂ ਭੇਜੋ। ਵੱਖਰਾ endpoint ਵੱਖਰੀ ਜਨਤਕ ਐਗਜ਼ਿਟ IP ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ, ਇਸ ਲਈ ਸੇਵਾ ਦੇ ਅਸਲ ਐਗਜ਼ਿਟ ਵਿਵਹਾਰ ਅਨੁਸਾਰ ਪੂਲ ਚੁਣੋ।