このウェブページhttp://volcano.si.edu/search_eruption.cfmを使用してデータをスクラップしようとしています。データのフィルタを要求する2つのドロップダウンボックスがあります。私はフィルタリングされたデータを必要としないので、それらを空白のままにして、 "Search Eruptions"をクリックして次のページに進みます。Rを使用してウェブページのダウンロードファイルボタンをクリックする
私が気づいたことは、得られたテーブルには、列の総量(合計24)と比較して少量の列(わずか5)しか含まれていないことです。ただし、「ダウンロード結果をExcel」ボタンをクリックしてダウンロードしたファイルを開くと、24列すべてが表示されます。これは私が必要とするものです。
これは、これがスクラップ練習(httrとrvestを使用)からより困難なものに変わったようです。しかし、実際に ""をExcelをダウンロードするには、 ""というボタンをクリックするのが難しいです。私の推測では、RSeleniumを使用する必要がありますが、ここではhttrをPOSTで使用しようとしています。あなたの親切な人が見つけることができるより簡単な方法があります。私はまた、gdata、data.table、XMLなどを使用して、ユーザエラーの結果である可能性のある無駄にしようとしました。
また、ダウンロードボタンを右クリックしてURLを表示することはできません。私のブラウザでインスペクタを使用して
url <- "http://volcano.si.edu/search_eruption_results.cfm"
searchcriteria <- list(
eruption_category = "",
country = ""
)
mydata <- POST(url, body = "searchcriteria")
、私は2つのフィルタが「eruption_category」と「国」であり、私はフィルタリングされたデータを必要としないので、両方が空白になることを見ることができました。
最後に、上記のコードは、わずか5列のテーブルを持つページに表示されるようです。しかし、以下のコードでは、(SelectorGadgetを使用して1つの列のみをスクレープする)rvestを使用してこのテーブルをスクラップすることはできませんでした。結局のところ、この部分はあまり重要ではありません。なぜなら、上記のように、これらの5つだけでなく、24の列がすべて必要であるからです。しかし、私が下で行ったことに誤りがあれば、感謝します。 。
Eruptions <- mydata %>%
read_html() %>%
html_nodes(".td8") %>%
html_text()
Eruptions
ご協力いただきありがとうございます。
ページをレンダリングするためにJavaScriptを使用していますように見えますがページ。最も簡単で速い方法は、Excelファイルをダウンロードして処理することだけです。データは静的であるように見えるため、ダウンロードが問題になることはありません。 – Dave2e
ありがとう@ Dave2e。残念ながら、Rでこれを行うには**必要**があります。そして、あなたが言ったように、ほとんど静的ですが、まだ頻繁に更新されています。 – abet