如何在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
相关产品推荐
相关产品推荐

