2013-11-02 76 views
7

我想從網站讀取HTML文件。具體來說,我想從gutenberg.org讀取HTML格式的書籍。每章的標題用標籤「h2」標記,每章的內容在「h2」後面的段落標籤「p」中。使用包XML我能夠獲得每個標籤的值或完整的HTML代碼。解析R中的HTML文件

下面是使用喬治·艾略特的米德爾馬契一個示例代碼:

library(XML) 

doc.html = htmlTreeParse('http://www.gutenberg.org/files/145/145-h/145-h.htm', 
         useInternal = TRUE) 
doc.value <- xpathApply(doc.html, '//h2|//p', xmlValue) 
doc.html.value <- xpathApply(doc.html, '//h2|//p') 

doc.value包含一個列表,其中每個元素是標籤的內容,但我不知道是否是H2標籤或p標籤。另一方面,doc.html.value包含一個包含每個標籤的html代碼的列表。這給我提供的信息是「h2」還是「p」標籤,但它也包含很多額外的代碼(如樣式信息等),我不需要它們。

我的問題:有沒有一種簡單的方法來獲取標籤的類型和標籤的價值,而沒有與其相關的其他信息?

回答

5

查看xmlValue的文檔說明還有另一個名稱爲xmlName的函數,它只提取標籤的名稱。使用這兩個,你想要什麼可以計算:

doc.html.name.value <- xpathApply(doc.html, '//h2|//p', function(x) { list(name=xmlName(x), content=xmlValue(x)); }) 

> doc.html.name.value[[1]] 
$name 
[1] "h2" 

$content 
[1] "\r\nGeorge Eliot\r\n"