Webアドレスから複数のWebファイルをダウンロードして読み込むコードを書いていますが、手動で各ファイルを手動でクリックして開くと機能します。これはウェブサイトがロックされているためで、関連するWebページを手動でクリックすると、コードはロックアウトされずにファイルを読み取ることができるからです。ロックされたWebサイトからのデータのインポート
私のコードは次のとおりです。ここで
VAR=c('tas', 'tasmin', 'tasmax', 'pr')
RCP=c('rcp26', 'rcp45', 'rcp60', 'rcp85')
SEQ=sprintf('%0.3d', 0:20)
for(i in VAR){
for(j in RCP){
for(k in SEQ){
FILES=read.table(paste0("https://climexp.knmi.nl/data/icmip5_",
i, "_Amon_mod_", j, "_5-7.5E_50-52.5N_n_su_", k, ".dat"))
colnames(FILES)=c("YEAR", "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
write.table(FILES, file=paste0("C:/.../", i, "-", j, "-", k, ".txt"), sep="\t")
}
}
}
は、多くのファイルの1本輸入へのリンクです:
https://climexp.knmi.nl/data/icmip5_tasmin_Amon_mod_rcp45_5-7.5E_50-52.5N_n_su_000.dat
私が上で手動でそれを行っているので、これが私のために開きますあなたがそれをクリックすると、おそらく正しく開くことはありません。これが問題です。これらのウェブサイトがロックされている/パスワードで保護されていることを認識するために私のコードを修正する必要があり、私は何とか最初にウェブサイトのロックを解除し、上記のようにダウンロードする必要があります。
アイデア?
JavaScriptがインスタンスを前面に渡した後にデータが返される可能性はありますか?もしそうなら、自分でページを "訪問"してデータを返すことができるスクレイパーが必要です。 PhantomJSが気になります。しかし、それ以上先に進む前に、データスクレイピングが許可されているかどうかサイトポリシーを確認してください。残念ながら(OPのために) –
@RomanLuštrikは、フォームが選択された後にサイトがデータファイルを動的に生成しているということです。私は彼らがある期間キャッシュされていると仮定しています。これが動作する唯一の方法は、フォームが 'rvest'または' RSelenium'を介してインストゥルメントされている場合です。 – hrbrmstr
注意: '.dat'ファイルはまだキャッシュされていない可能性が高いため、私には利用可能でした。 – hrbrmstr