Html rvest-在1个标记中刮取2个类
我是个新手。如何提取标记中有2个类名或只有1个类名的元素 这是我的代码和问题:Html rvest-在1个标记中刮取2个类,html,r,web-scraping,scrape,rvest,Html,R,Web Scraping,Scrape,Rvest,我是个新手。如何提取标记中有2个类名或只有1个类名的元素 这是我的代码和问题: doc <- paste("<html>", "<body>", "<span class='a1 b1'> text1 </span>", "<span class='b1'> text2 </span>", "</body>
doc <- paste("<html>",
"<body>",
"<span class='a1 b1'> text1 </span>",
"<span class='b1'> text2 </span>",
"</body>",
"</html>"
)
library(rvest)
read_html(doc) %>% html_nodes(".b1") %>% html_text()
#output: text1, text2
#what i want: text2
#I also want to extract only elements with 2 class names
read_html(doc) %>% html_nodes(".a1 .b1") %>% html_text()
# Output that i want: text1
有人可以帮忙吗?您可以使用css选择器,如下所示: 选择类包含
b1
非a1
:
read_html(doc) %>% html_nodes(".b1:not(.a1)")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
read\u html(doc)%%>%html\u节点(“.b1:非(.a1)”)
#{xml_nodeset(1)}
#[1]文本2
或者使用属性选择器:
read_html(doc) %>% html_nodes("[class='b1']")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
read\u html(doc)%>%html\u节点(“[class='b1']”)
#{xml_nodeset(1)}
#[1]文本2
选择类包含以下两个部分:
read_html(doc) %>% html_nodes(".a1.b1")
# {xml_nodeset (1)}
# [1] <span class="a1 b1"> text1 </span>
read\u html(doc)%>%html\u节点(“.a1.b1”)
#{xml_nodeset(1)}
#[1]文本1
谢谢!对于第一个解决方案,什么是:not()
?它是1语法还是:
可以与其他标记/类/id一起使用?不是的字面意思。i、 e..类不应在括号中包含类,是的,您可以将其与标记名和id一起使用,如span.b1:not(.a1)
。你可以查看更多信息。
read_html(doc) %>% html_nodes(".a1.b1")
# {xml_nodeset (1)}
# [1] <span class="a1 b1"> text1 </span>