私は(私はRLY PTSを必要としないので)@のgballenchの答えに光編集を行うために始めたが、それはあなたがそれを持っているよりももっと複雑ですあなたはそのイディオムで必要なファイルにアクセスするつもりはないので(99%が私の答えであることは間違いないでしょう:-)、その理由のすべてのホスト。
最初にdays
には、長さ3のパッドを埋め込み、0
で埋め替える必要がありますが、それはできません。次に、各年/ 00xコンボからすべてのファイル.grb
をダウンロードしたいので、それらを取得する方法が必要です。最後に、そのサイトでは認証が必要なため、基本認証を登録して使用する必要があります。このような
何か:
library(purrr)
library(httr)
library(rvest)
years <- c(1980:1981)
days <- sprintf("%03d", 1:2)
sprintf("http://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/NLDAS_MOS0125_H.002/%s/%%s/", years) %>%
map(~sprintf(.x, days)) %>%
flatten_chr() %>%
map(~{
base_url <- .x
sprintf("%s/%s", base_url, read_html(.x) %>%
html_nodes(xpath=".//a[contains(@href, '.grb')]") %>%
html_attr("href"))
}) %>%
flatten_chr() %>%
discard(~grepl("xml$", .)) %>%
walk(~{
output_path <- file.path("FULL DIRECTORY PATH", basename(.x))
if (!file.exists(output_path)) {
message(.x)
GET(
url = .x,
config = httr::config(ssl_verifypeer = FALSE),
write_disk(output_path, overwrite=TRUE),
authenticate(user = "[email protected]", password = "xldjkdjfid8y83"),
progress()
)
}
})
あなたはcurl
パッケージをインストールして、最終的には将来的にシンプルなバッチダウンロードのlibcurl
が利用できるようになりますhttr
パッケージをインストールする必要があります。
私はアカウントを持っていたので、このアプリにリンクしました。&これをテスト(30ダウンロードで終了)して動作します。 progress()
をGET()
コールに追加したので、個々のファイルをダウンロードできるようになりました。既にダウンロードしたファイルをスキップします(そのため、いつでもファイルを削除して再起動できます)。再ダウンロードが必要な場合は、再ダウンロードするファイルを削除してください。
.xml
ファイルも必要な場合は、discard()
コールを削除してください。
返信いただきありがとうございます。あなたのコードを試しましたが、次のエラーが表示されます。open.connection(x、 "rb")のエラー:SSL接続エラー。私はこのサイトでアクティブなアカウントを持っており、私は自分の資格情報を使用しました。このエラーについて何が分かりませんか?また、スクリプトには、データをダウンロードする場所への出力パスを指定する方法がありますか? – user8848543
セッション情報については、上記の画像を参照してください。 – user8848543
私はUbuntuの証明書を更新するための管理者特権を持っていません。このコードはWindowsで動作すると思いますか?また、それが動作する場合、出力データパスを指定する方法はありますか?ちょうどあなたがスクリプトを実行するために使用したOSを知りたい。私はあなたのためにこれが動作すると仮定します。 – user8848543