我正在做一个关于R的文本挖掘任务,我有一个包含一些html文档的语料库。我想删除<style>
标签和它们之间的所有文本,最好使用gsub功能。
的例子:
把这个:
<style>
.s4-tn{
border-left: 1px #0071C5 solid;
padding: 0px;
margin: 0px;
font-family: "Intel Clear", Verdana, verdana, san-serif;
font-size: 15px;
font-weight: lighter;
color: #0071C5; }
.s4-toplinks .s4-tn a.selected:hover{
color:#1F497D;
text-decoration: none;
}
</style>
<img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"/>
:
<img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"/>
我将使用removeNodes
library(XML)
doc <- htmlParse(txt,asText=TRUE)
styleNodes <- getNodeSet(doc, "//style")
removeNodes(styleNodes)
doc
> removeNodes(styleNodes)
NULL
> doc
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head></head>
<body><img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"></body>
</html>
>
保存您编辑的XML
,您可以使用saveXML
:
> saveXML(doc)
[1] "<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">n<html>n<head></head>n<body><img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"></body>n</html>n"
选择注释节点使用:
commentNodes <- getNodeSet(doc, "//comment()")
此处避免使用正则表达式,使用html/xml解析器。
txt <- '<style>
.s4-tn{
border-left: 1px #0071C5 solid;
padding: 0px;
margin: 0px;
font-family: "Intel Clear", Verdana, verdana, san-serif;
font-size: 15px;
font-weight: lighter;
color: #0071C5; }
.s4-toplinks .s4-tn a.selected:hover{
color:#1F497D;
text-decoration: none;
}
</style>
<img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"/>'
然后读取并解析它。例如,只获取"img"标签:
library(XML)
doc <- htmlParse(txt,asText=TRUE)
xpathSApply(doc,'//img')
[[1]]
<img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"/>