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

RSelenium循环遍历招聘网页:URL获取异常与页面回退问题及解决

RSelenium爬取Remote.com职位信息的问题及修复方案

原实现代码

#### REMOTE.COM ####
remDR$navigate('https://remote.com/jobs/all?query=marketing&country=anywhere')
# click on the cookies policy
remDR$findElement(using = 'xpath', '//*[@id="ccc-notify-accept"]')$clickElement()
# print all job listings
num_links <- 20
for(i in 1:num_links){
  remDR$findElement(using = 'xpath', 
                    paste('/html/body/div[2]/main/div/div/div[3]/article[',i,']', sep = ''))$clickElement()
  print(remDR$getCurrentUrl())
  remDR$goBack()
}

遇到的问题

  • print(remDR$getCurrentUrl())始终返回初始页面URL,而非点击后的职位详情页URL
  • 执行remDR$goBack()后回到空白页面,无内容加载

问题原因

循环执行速度远快于浏览器元素点击后的页面加载速度,导致页面还未完成跳转就执行后续操作,goBack()也因页面未完全加载无法正确返回列表页。

修复后的代码

for(i in 1:5){
  remDR$findElement(using = 'xpath', 
                    paste('/html/body/div[2]/main/div/div/div[3]/article[',i,']', sep = ''))$clickElement()
  Sys.sleep(2) # 预留页面加载时间
  print(remDR$getCurrentUrl())
  remDR$navigate('https://remote.com/jobs/all?query=marketing&country=anywhere') # 用navigate替代goBack,确保页面完整加载
  Sys.sleep(2) # 等待列表页加载完成,以便下一次点击
}

修复说明

  • 添加Sys.sleep(2):给浏览器足够时间完成页面加载,避免操作提前执行
  • 用remDR$navigate()替代remDR$goBack():navigate()会强制触发页面加载,确保回到列表页后内容正常显示
  • 末尾的Sys.sleep(2)不可省略:必须等列表页完全加载完成,才能定位并点击下一个职位条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:27:21