You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中提取非标准HTML标签的目标值?

解决rvest提取无标准属性的p标签内容问题

问题背景

你已经成功通过itemprop属性提取了前三个<p>标签的内容,但最后一个<p>标签没有itemprop属性,其内部的<span>带有aria-label="Quantidade de vagas de garagem",但直接选择该<span>提取文本时返回空值——因为目标数值2并不在<span>标签内,而是在<p>标签的同级文本节点中。

解决方案

方法一:通过span的aria-label定位父p标签提取文本

先找到带有指定aria-label的<span>,再获取它的父元素<p>,最后提取<p>的文本并清理空格:

library(rvest)
pagee <- read_html("html_file.html") 

nofgarage <- pagee %>% 
  html_elements(".listing-wrapper__content") %>% 
  html_nodes("span[aria-label='Quantidade de vagas de garagem']") %>% 
  html_parent() %>% # 获取该span的父节点p
  html_text(trim = TRUE) # 提取文本并去除首尾空白字符

nofgarage

输出结果:

[1] "2"

方法二:通过类名批量提取后按索引筛选

所有目标<p>标签都带有card__amenity类,可以先批量提取所有这类标签的文本,再通过索引获取第四个元素(对应车库数量):

library(rvest)
pagee <- read_html("html_file.html") 

# 提取所有card__amenity类的p标签文本
all_amenities <- pagee %>% 
  html_elements(".listing-wrapper__content .card__amenity") %>% 
  html_text(trim = TRUE)

# 获取第四个元素(车库数量)
nofgarage <- all_amenities[4]
nofgarage

输出结果:

[1] "2"

失败原因说明

你之前的代码选择了<span>标签,但该标签内只有<svg>图标,没有目标文本;目标数值2是<p>标签的直接文本内容,因此必须定位到<p>标签后再提取文本。

内容的提问来源于stack exchange,提问作者Ivan Bezerra Allaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:52:50