2017-01-01 102 views
0

私が購読しているウェブサイトからいくつかのデータを抽出したいと思います。私は手動でcsvファイルを抽出することができますが、毎日のファイルがあり、5年分のデータが必要なので、時間がかかります。ウェブサイトから.csvファイルを抽出する

私はrvestを使用してサイトにログインしましたが、データをダウンロードするために手動でボタンをクリックする必要がありました。どのようにR内でこれを行うことができますか?

手動でファイルをダウンロードすると、大量インポートが可能なので完全にうまくいくダウンロードフォルダに入りますが、同じようにRにデータをロードするだけで簡単にできます。

library(rvest) 

url  <-"http://www.horseracebase.com/index.php/" 
pgsession <-html_session(url)    ## create session 
pgform <-html_form(pgsession)[[1]]  ## pull form from session 

filled_form <- set_values(pgform, 
         `login` = "xxx", 
         `password` = "yyy") 

submit_form(pgsession,filled_form) 

これは私が(私は思う)で記録されますが、今、私はデータを抽出する方法がわからない。ここで

は、私がこれまで持っているものでしょうか?

df <- read.csv("http://www.someurl.com/betfairdata.csv") 

これはうまく動作しますが、すべてのファイルは、実際のページに必要なボタンのように[いいえ]をクリックし表示されない:

私はのようなものを使用ベットフェアで同じことを行います。

rvestを使用してボタンとやりとりする方法はありますか、または正しいURLを見つける方法があるので、上記のようにread.csvを使用するだけですか?

おかげ

+0

@ Floo0私はそれを試してみましたが、成功することはありませんでした。 – MidnightDataGeek

答えて

2

私は、無料のアカウントを作成し、ウェブサイトを調べました。

のように、.csvファイルとHTMLテーブルが混在しています。サイトのどこにも、.csvファイルがあります。 「クリックがない」と言って、「.csvファイルを表示する」と言うと、実際に記述しているHTML表です。

サイドノートには、Webサイトのバックエンドに.csvファイルもありません。バックエンドはリレーショナルデータベースであり、多くのフィルタと検索機能を強化します。

rvestと他のRパッケージをドキュメントとSOの回答とGoogleのさまざまなブログの両方で使用してXMLとHTMLテーブルをスクラップする方法については、たくさんのリソースがあります(Stack Overflowドキュメンテーション - 私はチェックしていませんが、おそらくそれもあります)。両方がまだ動作しても、私は、Stats and Thingsから1を引用したが、html()read_html()の賛成で廃止されましたことに注意します:

library("rvest") 
url <- "http://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_population" 
population <- url %>% 
    html() %>% 
    html_nodes(xpath='//*[@id="mw-content-text"]/table[1]') %>% 
    html_table() 
population <- population[[1]] 

head(population) 

をあなたはの一部を識別するために、クロムまたはFirefoxに組み込みの開発者ツールを使用することができますページを抽出する必要があります。 Firebugのようなサードパーティのツールを使うこともできますが、それは本当に必要ではありません。

  • クリック統計
  • クリックジョッキー7日パフォーマンス
  • オープン開発ツール
  • というボタンをクリックして「選択

      ブラウザのログインで
    1. とクリックリサーチ:たとえば

      要素を検査する」

    2. HTMLテーブルにカーソルを合わせるか、またはクリックしてください
    3. 強調されたソースコードは、この表に対応 - この例では、それは、もちろん/html/body/table[2]/tbody/tr/td/table[2]

    だ - 右あなたのクリップボードが今の目標を持って

  • クリックして「コピーX-パス」
  • 強調されたソースコードをクリックしてください

    write.csv(population, "population.csv", row.names=F)

    :あなたが.CSV(または任意の他の種類の)ファイルにあなたの解析された結果を保存したい場合、あなたはdata.framedata.table、または他の平らなオブジェクトにそれを持って後にそれを行うことができます3210

    readHTMLTable()でテーブルを削るほうが、XMLパッケージからテーブルを削るほうが簡単だという人もいますが、どちらも可能です。

  • +0

    お返事ありがとうございました。 csvファイルは、「結果 - >結果検索」に移動して取得します。 曜日を入力して「移動」をクリックします。これにより、画面上に結果が表示されます。その後、csvファイルまたはExcelファイルでさらに多くのデータを抽出することができます。 サイトからすべてのデータを個別に取得して、自分で作成することができますが、そのすべてがExcelファイルで完了したようです。私は5年のデータを抽出したいと考えています。私は最も簡単な選択肢を望んでいたと思います。 – MidnightDataGeek

    関連する問題