RのXMLパッケージとRCurlパッケージを使用して、Webサイトからデータを取得します。スクリプトは6,000,000ページをスクラップする必要があるため、ループを作成しました。
for (page in c(1:6000000)){
my_url = paste('http://webpage.....')
page1 <- getURL(my_url, encoding="UTF-8")
mydata <- htmlParse(page1, asText=TRUE, encoding="UTF-8")
title <- xpathSApply(mydata, '//head/title', xmlValue, simplify = TRUE, encoding="UTF-8")
.....
.....
.....}
ただし、数回ループすると、次のエラーメッセージが表示されます。
curlPerformのエラー(curl = curl、.opts = opts、.encoding = .encoding):接続タイムアウト
問題は、「タイムアウト」がどのように機能するかを理解していないことです。プロセスが700ページ後に終了する場合もあれば、1000、1200ページなどの後に終了する場合もあります。ステップは安定していません。接続がタイムアウトすると、ラップトップからこのWebページに15分間アクセスできなくなります。コマンドを使用して、1000ページが廃棄されるごとにプロセスを15分間遅らせることを考えました
if(page==1000) Sys.sleep(901)
、しかし何も変わっていません。
何がうまくいかず、これをどのように克服するかについてのアイデアはありますか?