下面是一个快速的模拟代码
<div class = "speech">
<p>
<a id = "xxxx"> </a>
<b> <a href = "xxxx"> xxxx </a> </b>
Text text text <i> text </i> text
<br>
text text <sup> text </sup> text
</p>
<p>
<a id = "xxxx"> </a>
<b> <a href = "xxxx"> xxxx </a> </b>
Text text text <i> text </i> text
<br>
text text <sup> text </sup> text
</p>
</div>
我想获得一个列表或数据框架,其中包含每个" "作为该列表/数据帧的唯一条目连接的节点。基本上,我想去掉"a"one_answers";b"从子节点中得到结果,同时得到每个文本内容的" "标记用于列表/数据框架中的一个字符串条目,不带"i", "br"one_answers";sup"标签(但仍然是这些标签内的文本)
提前感谢!
下面是我的代码:GET(url = "https://xxx") %>%
read_html() %>%
html_nodes(xpath = "//div[@class = 'speech']//text()") %>%
as.character()
我被困在这里了。它得到的是一个带有文本元素的列表,但是:
- "i", "sup"one_answers";br"标签在这个列表中做了一个分隔,而我想要每个" ">
设foo.html
为包含示例html的文件:
library(tidyverse)
library(rvest)
library(xml2)
doc <-
read_html("foo.html") %>%
html_nodes(xpath = "//p") %>%
as_xml_document(root = ".")
xml_remove(
doc %>% xml_find_all(xpath = "//a|b")
)
doc %>%
as_list() %>%
pluck(".") %>%
map(~ .x %>% purrr::simplify() %>% paste0(collapse = " "))
输出:
$p
[1] "n n list(" ", " ") nText text text list(" text ") textn list() ntext text list(" text ") textn"
$p
[1] "n n list(" ", " ") nText text text list(" text ") textn list() ntext text list(" text ") textn"