2017-01-01 133 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表格。

在附註中,網站後端也沒有.csv文件。後端是一個關係數據庫,它爲許多過濾器和搜索功能提供動力。

說了這麼多,對於如何使用rvest刮XML和HTML表格和其它的R文檔中兩種封裝,在SO答案,並在谷歌各種博客(如果不是在堆棧溢出了大量的資源文檔 - 我沒有檢查,但它可能也在那裏)。我引用一個來自Stats and Things,但要注意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) 

您可以使用內置的Chrome或Firefox開發者工具來識別的部分頁面,你需要提取。您也可以使用Firebug等第三方工具,但並非真正必要。

例如:

  1. 在您的瀏覽器登錄,點擊研究
  2. 點擊統計
  3. 點擊賽馬7日表現
  4. 開放開發工具
  5. 單擊說按鈕「選擇元素來檢查它「
  6. 懸停或單擊HTML表格
  7. 高亮顯示的源代碼對應這個表 - 右鍵單擊​​突出顯示的源代碼
  8. 點擊「複製x路」
  9. 剪貼板現在有目標 - 在這個例子中是/html/body/table[2]/tbody/tr/td/table[2]

當然,如果你想你的分析結果保存到.csv(或任何其他形式的)文件,你能做到,你有它變成一個data.framedata.table,或其他平面物體後:

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

請注意,有些人發現從XML軟件包中用readHTMLTable()刮取表格更容易,但兩者都可以完成這項工作。

+0

感謝您的回覆,並花時間查看網站。 通過導航到「結果 - >結果搜索」獲得csv文件 然後,您可以輸入一天並單擊「開始!」然後在屏幕上顯示一些結果。然後,您可以在csv文件或Excel文件中提取更多數據。 它看起來像我可以從網站中分別獲取所有數據,並將它們拼湊在一起,但它的所有數據都是在Excel文件中完成的。鑑於我想提取5年的數據,我想我是希望最簡單的選擇。 – MidnightDataGeek