r - rvest:根据内部类文本过滤节点并计算内部svg元素的数量
问题描述
我的 HTML 看起来像:
<div class="rates">
<div class="rate">
<span class="title">A</span>
<img src="x.svg" alt="" width="20"><img src="x.svg" alt="" width="20"><img src="x.svg" alt="" width="20">
</div>
<div class="rate">
<span class="title">B</span>
<img src="y.svg" alt="" width="20"><img src="y.svg" alt="" width="20">
</div>
</div>
我想得到x.svg
in和in的A
计数。所以:y.svg
B
A: 3
B: 2
我有 2 个问题:
1. 如果我同时使用html_nodes(".rate")
两者,但不知道如何根据标题文本进行过滤。
2. 计算.svg
元素出现的次数。
解决方案
这是通过查找所有父速率节点然后计算每个父节点的 img 节点数的可能解决方案。
library(rvest)
library(magrittr)
page<-read_html('<div class="rates">
<div class="rate">
<span class="title">A</span>
<img src="x.svg" alt="" width="20"><img src="x.svg" alt="" width="20"><img src="x.svg" alt="" width="20">
</div>
<div class="rate">
<span class="title">B</span>
<img src="y.svg" alt="" width="20"><img src="y.svg" alt="" width="20">
</div>
</div>')
#find all of the parent nodes
ratenodes <- page %>% html_nodes("div.rate")
#find a single title node per parent
titles <- ratenodes %>% html_node("span.title") %>% html_text()
#Count the number of img nodes per parent.
imagecount <- sapply(ratenodes, function(node) {
node %>% html_nodes("img") %>% length()})
answer<-data.frame(titles, imagecount)
推荐阅读
- amazon-web-services - AWS 加密密钥删除
- postgresql - 如何使用来自docker的de psql命令行在主机终端上键入psql?
- python - 为什么我的按钮没有出现在 Tkinter Frame 中?
- uicollectionview - 使用相机胶卷中的图像填充 UICollectionView
- php - 基于日期组的查询计数按类型 - Laravel
- c# - ASP.NET Web API 错误,尝试在控制器中分配接口后
- javascript - setInterval() 不更新变量
- python-3.x - ModuleNotFoundError:执行 TimerTrigger 时没有名为“请求”的模块
- javascript - 如何在 JavaScript 中通过单击(按钮)来循环单击数组?
- woocommerce - 支付网关未触发 woocommerce_payment_complete 和 woocommerce_after_checkout_validation 挂钩