0

SOには、aspxサイトへの認証済みログインとそこからのダウンロードをカバーするかなり詳細な回答が多数あります。完全なn00bとして、Webフォームからデータを取得する方法の簡単な説明を見つけることができませんでした

次の MWE は、単なる例です。そして、この質問は、より幅広いWebページのコレクションに対してそれを行う方法を教えることを目的としています.

Webサイト :

http://data.un.org/Data.aspx?d=SNA&f=group_code%3a101

私が試して(明らかに)失敗したこと。

test=read.csv('http://data.un.org/Handlers/DownloadHandler.ashx?DataFilter=group_code:101;country_code:826&DataMartId=SNA&Format=csv&c=2,3,4,6,7,8,9,10,11,12,13&s=_cr_engNameOrderBy:asc,fiscal_year:desc,_grIt_code:asc')

私にgobledegookを与えますView(test)

これを進めたり、正しい方向に向けたりすることは、非常にありがたいことです。

4

2 に答える 2

2

read.csv を使用してアクセスしている URL は、圧縮されたファイルを返しています。say を使用してダウンロードしhttr、内容を一時ファイルに書き込むことができます。

 library(httr)
 urlUN <- "http://data.un.org/Handlers/DownloadHandler.ashx?DataFilter=group_code:101;country_code:826&DataMartId=SNA&Format=csv&c=2,3,4,6,7,8,9,10,11,12,13&s=_cr_engNameOrderBy:asc,fiscal_year:desc,_grIt_code:asc"
 response <- GET(urlUN)
 writeBin(content(response, as = "raw"), "temp/temp.zip")
 fName <- unzip("temp/temp.zip", list = TRUE)$Name
 unzip("temp/temp.zip", exdir = "temp")
 read.csv(paste0("temp/", fName))

またはHmisc、便利なgetZip機能があります。

 library(Hmisc)
 urlUN <- "http://data.un.org/Handlers/DownloadHandler.ashx?DataFilter=group_code:101;country_code:826&DataMartId=SNA&Format=csv&c=2,3,4,6,7,8,9,10,11,12,13&s=_cr_engNameOrderBy:asc,fiscal_year:desc,_grIt_code:asc"
 unData <- read.csv(getZip(urlUN))
于 2013-05-15T03:38:57.640 に答える
1

リンクは動的に生成されています。もう 1 つの問題は、コンテンツが実際にはそのリンクにないことです。最終的にzipファイルで返される(非常に奇妙で文書化されていない)APIにリクエストを行っています。そのリンクをクリックして Chrome 開発ツールを見ると、メッセージと応答ヘッダーが表示されます。

これを解決する方法はいくつかあります。JavaScript を知っている場合は、Phantom のようなヘッドレス Webkit インスタンスをスクリプト化して、これらのページをロードし、リック イベントをシミュレートして、コンテンツの応答を待ってから、それを何かにパイプすることができます。

あるいは、httr を調整して、これを適切な安らかな API のように扱うことができる場合があります。それがリモートで可能かどうかはわかりません。:)

于 2013-05-15T01:28:54.110 に答える