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

R使用RSelenium爬取网页时xml_find_all应用于character类报错求助

问题原因

第一个报错(xml_find_all找不到方法)

remDr$getPageSource()返回的是嵌套列表,取第一个元素后得到的是HTML字符串,直接对字符串调用html_nodes类的rvest方法会报错,必须先通过read_html()将字符串解析为XML/HTML对象才能使用rvest的选择器方法。

第二个报错(行数不匹配)

两个核心原因:

  1. 你使用了ID选择器#offerPriceValue匹配商品现价,HTML中ID全局唯一,遍历每个商品节点时除了第一个商品外都匹配不到对应节点,返回长度为0的空向量
  2. 部分商品可能没有原价(old-price节点),匹配不到时也会返回空向量,和固定长度为1的periodo/fecha/ecommerce字段行数不一致,导致data.frame生成失败

解决方法

  1. 先完成页面解析再遍历商品节点
  2. 把ID选择器替换为对应商品节点下的class选择器
  3. 对所有提取文本的步骤加空值兜底,匹配不到节点时返回NA保证长度一致
  4. 确认商品节点选择器和属性选择器和页面实际结构匹配

修正后代码

library(RSelenium)
library(rvest)
library(dplyr)
library(stringr)
library(purrr)
library(lubridate)

# 启动RSelenium
rD  <- rsDriver(port = 4560L, browser = "chrome", version = "3.141.59", chromever = "93.0.4577.63",
                geckover = "latest", iedrver = NULL, phantomver = "2.1.1",
                verbose = TRUE, check = TRUE)
remDr <- rD[["client"]]

Sys.sleep(10)
tvs_url <- "https://www.lacuracao.pe/curacao/tv-y-audio/televisores"
remDr$navigate(tvs_url)
Sys.sleep(10)

# 滚动加载全部商品
for(i in 1:20){      
  remDr$executeScript(paste("scroll(0,",i*10000,");"))
  Sys.sleep(5)    
}

# 获取并解析页面源码
h <- remDr$getPageSource()[[1]]
page_html <- read_html(h)
product_nodes <- html_elements(page_html, "div.product")

# 遍历提取信息,加空值兜底
df <- map_dfr(product_nodes, function(node){
  data.frame(
    periodo = year(Sys.Date()),
    fecha = Sys.Date(),
    ecommerce = "lacuracao",
    producto = html_node(node, ".product_name") %>% html_text(trim = TRUE) %>% {if(length(.) == 0) NA_character_ else .},
    precio.antes = html_node(node, '.old-price') %>% html_text(trim = TRUE) %>% {if(length(.) == 0) NA_character_ else .},
    precio.actual = html_node(node, '.offer-price') %>% html_text(trim = TRUE) %>% {if(length(.) == 0) NA_character_ else .}
  )
})

# 关闭驱动
remDr$close()
rD$server$stop()

注:如果现价选择器.offer-price匹配不到,可以打开浏览器F12检查对应现价元素的class属性替换即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:48:00