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

R使用rvest时如何写XPath提取属性值在指定向量内的节点文本

实现方案

你之前的写法失效的核心原因是:XPath表达式字符串无法直接识别R环境中的变量,你需要先把R侧的id向量拼接为XPath支持的多值匹配语法,再传入rvest调用。

完整可运行代码

library(rvest)

# 1. 准备测试数据(你的原始XML和id向量)
xml_content <- '
<paragraph id = "xx">
<text>hello</text>
</paragraph>
<paragraph id = "yy">
<text>bonjour</text>
</paragraph>
<paragraph id = "zz">
<text>guten Tag</text>
</paragraph>
'
id_vector <- c("xx", "zz")

# 2. 拼接合法的XPath表达式
# 生成id匹配条件段,格式为 @id = 'xx' or @id = 'zz'
id_match_cond <- paste0("@id = '", id_vector, "'", collapse = " or ")
# 完整XPath:匹配符合id条件的paragraph节点下的text节点的文本内容
target_xpath <- paste0("//paragraph[", id_match_cond, "]/text/text()")

# 3. 用rvest提取目标文本
result <- read_html(xml_content) |>
  html_elements(xpath = target_xpath) |>
  html_text()

# 输出结果为 c("hello", "guten Tag"),符合需求
print(result)

补充说明

如果你的id值本身包含单引号,可以调整拼接逻辑用双引号包裹属性值,避免语法冲突。

内容的提问来源于stack exchange,提问作者Etienne Brossard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:18:01