R 如何删除<;之间的所有文本;风格>;标签?

R 如何删除<;之间的所有文本;风格>;标签?,r,text-mining,gsub,R,Text Mining,Gsub,我在R上做一个文本挖掘作业,我有一个语料库,其中包括一些html文档。我想删除标记和它们之间的所有文本,最好使用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

我在R上做一个文本挖掘作业,我有一个语料库,其中包括一些html文档。我想删除
标记和它们之间的所有文本,最好使用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"/>

.s4 tn{
左边框:1px#0071C5实心;
填充:0px;
边际:0px;
字体系列:“英特尔清晰”、Verdana、Verdana、san serif;
字体大小:15px;
字体重量:较轻;
颜色:#0071C5;}
.s4 toplinks.s4 tn a.已选择:悬停{
颜色:#1F497D;
文字装饰:无;
}
为此:

<img id="corner" src="/sites/HR_ETM/SitePages/img/bottom_bar.png"/>

避免在此处使用正则表达式,并使用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"/>'

txt我会使用
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>

> 
要选择注释节点,请使用:

commentNodes <- getNodeSet(doc, "//comment()")

commentNodes这似乎不完整。OP不想要
内容,他想要去掉
标记后剩下的内容,标记是它们之间的文本。(我们使用HTML解析器很好;使用regexps处理HTML只能做一些琐碎的事情。)谢谢@agstudy。这回答了OP问题中的示例。我想知道他们发表评论说这只是一个例子,他们的真实文本可能包含任何其他任意HTML标记之前多久。在这一点上,我假设这个答案将不再有效?我将发布一个更好的答案:)我将回顾如何否定xpath元素:)@agstudy伟大的方法。只是出于好奇,有没有办法否定
样式
标记,这样它就删除了这些内容,而其他所有内容都被抛在了后面?如果有其他形式的内容(比如
标签),你的方法不会抓住它们。事实上,我也会:)但我认为你可能会遇到一些性能问题,因为你需要阅读所有的DOM。公平点说,我想OP需要澄清他们想要返回什么谢谢!顺便问一下,如何将文档转换为字符?我们正在尝试使用
styleNodes使用
getNodeSet(doc,“//comment()”)
> 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()")