首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用R grepl删除HTML文件中的一行

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

Stack Overflow用户
提问于 2018-07-16 05:38:14
回答 1查看 100关注 0票数 0

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

代码语言:javascript
复制
> 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>

我的目标是创建一个R函数来从文档中删除包含脚本myscript1的行

代码语言:javascript
复制
<script myscript1 src="https://website.com/javascripts.js" type="text/javascript"></script>

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

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

注意:在删除myscript1之后,多亏了xPath,我需要从文档中获取一些元素。

你能帮帮我吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 08:21:42

一种方法是首先将html文件的字符矢量表示放到R中并使用它。为此,我们可以将外部with对象(blob)写出为一个文本html文件,然后使用基本函数readLines将其读入。考虑一下:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51352444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档