You need to enable JavaScript to run this app. 使用rvest爬取网页指定文本时如何定位正确的目标标签?
优惠活动
大模型
产品
解决方案
定价
更多

使用rvest爬取网页指定文本时如何定位正确的目标标签?

rvest 爬取目标文本的代码调整

原代码匹配失效的核心原因

  • 全局匹配.u-visually-hidden类的范围过宽:该类名是站点通用的无障碍辅助标记,整页存在大量不同功能的同名节点,直接全局选会出现结果混杂、匹配错节点的问题
  • 用html_text()提取文本时会完整保留源码里的换行、首尾及连续冗余空格,和目标需要的规整文本格式不匹配

具体调整步骤

  1. 收窄选择器范围:把目标文本的父容器.Match-centre-summary加入匹配规则,只锁定比赛摘要区块内的对应span节点,彻底排除其他位置的同名类干扰
  2. 替换文本提取方法:用自带文本规整能力的html_text2()替代原生html_text(),自动把源码里的换行、连续空格合并为正常单空格
  3. 统一文本格式:将提取完成的文本转为小写,匹配目标文本的大小写要求

可直接运行的调整后代码

library(rvest)
url <- 'https://www.nrl.com/draw/nrl-premiership/2019/round-1/storm-v-broncos/'
# 读取页面源码
page_content <- read_html(url)
# 精准定位目标文本所在节点
target_node <- html_nodes(page_content, '.Match-centre-summary span.u-visually-hidden')
# 规整文本格式并统一大小写
target_result <- html_text2(target_node) |> tolower()
# 转为所需的数据框结构
RawTable <- data.frame(extracted_text = target_result)

运行效果

上述代码执行完成后,RawTable中存储的提取结果为melbourne storm has achieved 4 tries brisbane broncos has achieved 2 tries,完全符合目标文本的提取要求。

小提示:如果遇到网络波动导致节点加载不完整,可在read_html()中补充设置超时参数,提升请求稳定性。

内容的提问来源于stack exchange,提问作者Matt Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 10:36:08