使用R grepl删除HTML文件中的一行

使用R grepl删除HTML文件中的一行,r,grepl,R,Grepl,我在一个名为doc的对象中有一个HTLM文档 > doc <!DOCTYPE html> <h1>Hello</h1> <br> <p>I am an html file</p> <script myscript1 src="https://website.com/javascripts.js" type="text/javascript"></script> <p>I am a

我在一个名为doc的对象中有一个HTLM文档

> doc

<!DOCTYPE html>
<h1>Hello</h1>
<br>
<p>I am an html file</p>
<script myscript1 src="https://website.com/javascripts.js" type="text/javascript"></script>
<p>I am a paragraph</p>
<script myscript2 src="https://website2.com/function.js" type="text/javascript"></script>
>文档
你好

我是一个html文件

我是一个段落

我的目标是创建一个R函数,从doc中删除带有脚本myscript1的行

<script myscript1 src="https://website.com/javascripts.js" type="text/javascript"></script>

我尝试了以下代码,但不起作用:

remove <- "<script myscript1 src="https://website.com/javascripts.js" type="text/javascript"></script>"
doc <- doc[!grepl(paste(remove), doc),]

remove一种方法是首先将html文件的字符向量表示形式放入R中,然后使用它。为此,我们可以将externalptr对象(blob)写成文本html文件,然后使用基本函数readLines将其读回。考虑:

old  <- '<!DOCTYPE html>
<h1>Hello</h1>
<br>
<p>I am an html file</p>
<script myscript1 src="https://website.com/javascripts.js" 
type="text/javascript"></script>
<p>I am a paragraph</p>
<script myscript2 src="https://website2.com/function.js" 
type="text/javascript"></script>'

write(old,"old.html")

library(xml2)
doc  <- read_xml("old.html", as_html=TRUE)
write_xml(doc, "foo.html")
bar <- readLines("foo.html")
barbar  <- bar[!grepl("myscript1",bar)]
barbar
#[1] "<!DOCTYPE html>"
#[2] "<html><body>"
#[3] "<h1>Hello</h1>"
#[4] "<br><p>I am an html file</p>"
#[5] "<script myscript2 src=\"https://website2.com/function.js\" 
#    type=\"text/javascript\"></script>"
#[6] "</body></html>"rite(barbar, "new.html")

old什么类型的对象是
doc
?它是一个简单的字符串,还是一个来自刮取包的更高级别的对象?doc是一个用XML::htmlparsersgt47创建的“externalptr”对象,它可以工作!但我发现我不能再使用xpath了(因为xpath不能应用于字符类型对象)。有什么建议吗?一种方法是将字符向量写入文本文件
write(barbar,“new.html”)
,然后再次读入
foo