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

使用rvest提取.experience内容返回character(0)求助

问题排查与解决方案

问题原因

目标内容是JavaScript动态渲染生成的,read_html()只能获取服务器直接返回的静态HTML,而这部分内容在静态HTML中并不存在,因此使用.experience选择器会返回character(0)。

你可以验证这一点:将静态HTML输出查看,搜索.experience相关内容,会发现完全没有对应的DOM元素:

cat(as.character(page))

解决方案

方法1:使用RSelenium处理动态渲染

RSelenium可以模拟浏览器行为,等待JS执行完成后再提取内容,步骤如下:

  1. 安装依赖包并配置浏览器驱动(如ChromeDriver,需确保其路径在系统环境变量中)
  2. 启动浏览器会话加载页面
  3. 提取目标元素文本
# 安装RSelenium(仅首次需要)
install.packages("RSelenium")
library(RSelenium)

# 启动Chrome会话
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 加载目标页面
remDr$navigate("https://yoopies.fr/recherche-aide-a-domicile/results?auto=1&c=paris")

# 等待页面渲染完成(根据网络情况调整等待时间)
Sys.sleep(5)

# 提取所有.experience元素的文本
experience_elements <- remDr$findElements(using = "css selector", value = ".experience")
References <- sapply(experience_elements, function(el) el$getElementText())

# 清理会话
remDr$close()
driver$server$stop()

# 查看结果
print(References)

方法2:直接调用后台API(更高效)

现代网站通常通过AJAX请求从后台API获取数据,再用JS渲染到页面上。你可以通过浏览器开发者工具的「Network」面板,筛选XHR请求,找到返回用户数据的API接口,直接请求接口获取数据:

library(httr)
library(jsonlite)

# 替换为实际抓包得到的API地址(需自行确认)
api_url <- "https://yoopies.fr/api/your-target-endpoint?auto=1&c=paris"

# 发送请求解析数据
response <- GET(api_url)
data <- fromJSON(content(response, "text"))

# 提取experience字段(需根据API返回的结构调整)
References <- data$items$experience
print(References)

这种方法无需模拟浏览器,速度更快,稳定性更高,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:35:01