rvest - 在 1 个标签中抓取 2 类
rvest - scrape 2 classes in 1 tag
我是新来的。如何提取标签中具有 2 个 class 个名称或只有 1 个 class 个名称的元素?
这是我的代码和问题:
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
这是我的机器规格:
操作系统:Windows10.
rvest 版本:0.3.2
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
有人可以帮忙吗?
您可以使用 css 选择器,如下所示:
Select class 包含 b1
而不是 a1
:
read_html(doc) %>% html_nodes(".b1:not(.a1)")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
或使用属性选择器:
read_html(doc) %>% html_nodes("[class='b1']")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
Select class 包含:
read_html(doc) %>% html_nodes(".a1.b1")
# {xml_nodeset (1)}
# [1] <span class="a1 b1"> text1 </span>
我是新来的。如何提取标签中具有 2 个 class 个名称或只有 1 个 class 个名称的元素?
这是我的代码和问题:
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
这是我的机器规格:
操作系统:Windows10.
rvest 版本:0.3.2
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
有人可以帮忙吗?
您可以使用 css 选择器,如下所示:
Select class 包含 b1
而不是 a1
:
read_html(doc) %>% html_nodes(".b1:not(.a1)")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
或使用属性选择器:
read_html(doc) %>% html_nodes("[class='b1']")
# {xml_nodeset (1)}
# [1] <span class="b1"> text2 </span>
Select class 包含:
read_html(doc) %>% html_nodes(".a1.b1")
# {xml_nodeset (1)}
# [1] <span class="a1 b1"> text1 </span>