r语言 - 如何删除标签之间的所有文本<style>?



我正在做一个关于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"/> 

PS:评论后编辑

相关内容

  • 没有找到相关文章

最新更新