2016-06-13 95 views
0

我試圖從網上做一個簡單的XML解析,但我似乎遇到了一些障礙。如果我嘗試做一個經典的XML解析:解析沒有樣式信息的XML?

library(XML) 
url <- c("http://www.boardgamegeek.com/xmlapi/boardgame/173346?stats=1") 
xml <- xmlTreeParse(url, encoding = "UTF-8", isURL=TRUE) 

我得到:

Unknown encoding "UTF-8" 
Error: 1: Unknown encoding "UTF-8" 

即使它好像我指定的編碼了。從網站上查看XML,它頂層表示它沒有任何樣式信息,但仍然顯示文檔樹。然後,如果我嘗試做一個htmlParse代替,

file <- htmlTreeParse(url, encoding = "UTF-8", isURL=TRUE) 

我得到:

Error in which(value == defs) : 
argument "code" is missing, with no default 

有什麼明顯的,我在這裏失蹤?

回答

2

你可能會發現,從長遠來看更容易移動到rvestxml2

library(rvest) 
library(dplyr) 
library(purrr) 

pg <- read_xml("http://www.boardgamegeek.com/xmlapi/boardgame/173346?stats=1") 

xml_nodes(pg, xpath="//name") %>% xml_text() 

xml_nodes(pg, xpath="//description") %>% xml_text() 

xml_nodes(pg, xpath="//boardgamehonor") %>% xml_text() 

xml_nodes(pg, xpath="//name[@primary='true' and @sortindex=1]") %>% xml_text() 

html_nodes(pg, xpath=".//ranks/rank") %>% 
    xml_attrs() %>% 
    map(~as_data_frame(as.list(.))) %>% 
    bind_rows() 
+0

感謝您的回答。還有一個問題:在最後的字段中,有信息,但似乎不可退貨。有沒有辦法從標籤返回xml字符串? – AI52487963

+1

這聽起來像你可能需要刷新HTML/XML一點。這些都是相當基本的問題,你需要作爲一個擴展,並且很容易找到答案,但是假設知道HTML/XML。最後你會變得更好,並且對此有着堅實的基礎理解。 – hrbrmstr