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

使用RSelenium+rvest爬取页面时遇会话错误及翻页异常求助

问题解决方案

1. 解决"No active session with ID"等NoSuchDriver错误

  • 确认geckodriver版本与Firefox 118.0.2完全匹配,下载对应版本驱动
  • Windows系统下,将geckodriver.exe放到系统PATH目录(如C:\Windows\System32),或启动RSelenium时指定驱动路径:
library(RSelenium)
driver <- rsDriver(
  browser = "firefox",
  extraCapabilities = list(
    "moz:firefoxOptions" = list(
      binary = "C:\\Program Files\\Mozilla Firefox\\firefox.exe" # 替换为你的Firefox安装路径
    )
  ),
  port = 4567L # 指定固定端口避免冲突
)
  • 加入异常捕获,防止session意外中断:
tryCatch({
  remDr <- driver[["client"]]
  remDr$navigate("https://igop.uab.cat/category/publicacions/")
}, error = function(e) {
  driver$server$stop()
  driver <- rsDriver(browser = "firefox")
  remDr <- driver[["client"]]
})

2. 解决无法打开Firefox的UnknownError及httr调用错误

  • 关闭Firefox自动更新:打开Firefox→设置→常规→Firefox更新,选择“检查更新但让我选择是否安装”
  • 检查防火墙/杀毒软件是否拦截geckodriver.exe,暂时关闭防护测试
  • 更新相关依赖包:
install.packages(c("RSelenium", "httr", "rvest"))
  • 尝试无头模式启动Firefox:
driver <- rsDriver(
  browser = "firefox",
  extraCapabilities = list(
    "moz:firefoxOptions" = list(
      args = list("--headless")
    )
  )
)

3. 解决无法翻到第三页、重复读取前两页的问题

页面采用AJAX加载,URL无变化,需用RSelenium模拟点击下一页按钮:

library(rvest)
remDr <- driver[["client"]]
all_links <- c()

while(TRUE) {
  # 解析当前页面的Read More链接
  page_source <- remDr$getPageSource()[[1]]
  page <- read_html(page_source)
  links <- page %>% html_elements("a:contains('Read More')") %>% html_attr("href")
  all_links <- c(all_links, links)
  
  # 查找下一页按钮
  next_btn <- tryCatch(
    remDr$findElement(using = "css selector", value = "a.next.page-numbers"),
    error = function(e) NULL
  )
  
  if(is.null(next_btn)) break # 无下一页则退出循环
  
  # 点击下一页并等待加载
  next_btn$clickElement()
  Sys.sleep(2) # 可根据网络调整等待时长
}

# 去重后输出结果
all_links <- unique(all_links)
print(all_links)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:25:06