我想从网站上读取HTML文件。具体来说,我想从gutenberg.org阅读HTML格式的书籍。每个章节的标题都用标签“h2”标记,并且每个章节的内容都在“h2”之后的段落标签“p”中。使用XML包,我可以获取每个标签的值或完整的HTML代码。
这是使用George Elliot的Middlemarch的示例代码:
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”标签的信息,但它还包含许多我不需要的额外代码(例如样式信息等)。
我的问题:是否有一种简单的方法可以仅获取标签的类型和标签的值,而无需获取与标签相关的其他信息?
最佳答案
查看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"
关于html - 在R中解析HTML文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19748130/