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
相关产品推荐
相关产品推荐

