2016-04-05 95 views
0

我剛剛編輯我的問題,使其更一般: 「如何使用r刮臉,當格式不包括在任何r功能?」刮臉並不總是很容易

首先,我應該如何知道格式是否匹配rvest可以提取的r函數?

其次,假設我嘗試了所有可用的抓取功能並且失敗了,我該如何繼續?自己寫一個解析函數?有沒有更簡單的方法來做到這一點?

如果readHTMLTable不能爲這個實例工作,除了解析一個巨大的字符串操作中的html代碼之外,我還應該追求哪些其他選項?

+0

閱讀FM:幫助示例首先讀取文檔:'doc = htmlParse(url); tableNodes = getNodeSet(doc,「// table」); tb = readHTMLTable(tableNodes [[2]])' –

+1

此外,它看起來不像HTML表格。可能看起來像一張桌子,但實際上有不同的結構。 –

+0

嘗試使用面向XML的函數進行閱讀。 –

回答

0

我認爲這個問題的一般答案是「用任何語言刮臉往往是脖子上的疼痛」。這是因爲人們隨意地將東西放在網上,糟糕的格式很難讓機器解析。

我不會做大量的抓取,也沒有比「在頁面源視圖中查找,使用反覆試驗」更好的答案。

它看起來像表格結構嚴重;如果你嘗試提取<tr>(錶行)你收到垃圾...

Weblink <- "http://hmofs.northwestern.edu/hc/crystals.php" 
library(rvest) 
rr <- read_html(Weblink) 
tab2 <- html_nodes(rr,"table")[4]  ## get 4th table 
vals <- html_text(html_nodes(tab2,"td")) ## get *all* elements in 4th table 

現在只拿數值 - 表的第7列是下載的信息,並得到丟棄這樣

vals <- suppressWarnings(na.omit(as.numeric(vals))) 
matrix(vals,byrow=TRUE,ncol=6)