RSelenium加载Cleartrip酒店详情页空白、源码不完整问题求解
问题根因
Cleartrip配置了针对自动化爬虫的检测规则,默认RSelenium启动的浏览器会携带webdriver标识、自动化控制标记等特征,被网站识别后会拦截返回空白内容,这是你不同浏览器、设备都能复现问题的核心原因。
解决方案
1. 启动浏览器时隐藏自动化特征
添加启动配置抹去Selenium相关标记,绕过基础反爬检测,参考初始化代码:
library(rvest) library(dplyr) library(httr) library(xml2) library(RSelenium) library(stringr) library(tidyverse) ### 固定参数 search_url <- "https://www.cleartrip.com/hotels/results?city=New+Delhi&state=Delhi&country=IN&area=&poi=&hotelId=&hotelName=&SearchTag=&dest_code=35485&chk_in=07/10/2021&chk_out=11/10/2021&adults1=2&children1=0&num_rooms=1" hotel_url <-"https://www.cleartrip.com/hotels/details/hotel-royal-paradise-709260?c=290921%7C021021&r=2,0&compId=&fr=undefined&ur=7&urt=featured&stp=none&pahCCRequired=true&op=true&area=&sd=1631919589220&lowRate=true&dest_code=35485&tags=#location" ### 自定义Firefox配置,绕过反爬检测 eCaps <- list( "moz:firefoxOptions" = list( prefs = list( "dom.webdriver.enabled" = FALSE, "useAutomationExtension" = FALSE, "privacy.resistFingerprinting" = TRUE, "general.useragent.override" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:118.0) Gecko/20100101 Firefox/118.0" ), args = list("--disable-blink-features=AutomationControlled") ) ) ### 初始化Selenium rD <- rsDriver(browser="firefox", port=4545L, verbose =F, extraCapabilities = eCaps) remDr <- rD[["client"]]
2. 模拟真实用户访问路径
不要直接跳转到酒店详情URL,先加载搜索页后点击对应酒店链接,同步会话cookie和浏览上下文,避免被反爬规则命中:
# 加载搜索页后停留模拟用户操作 remDr$navigate(search_url) Sys.sleep(2 + runif(1, 1, 3)) # 定位酒店链接并点击(选择器可根据实际页面结构调整) hotel_link <- remDr$findElement(using = "xpath", '//*[contains(@class,"hotelName")]/a') hotel_link$clickElement() # 等待详情页加载完成 Sys.sleep(5)
3. 修复收尾代码错误
你原有收尾逻辑里的pDrv变量未定义,直接运行会报错,调整为如下即可:
remDr$close() rD$server$stop() gc() system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
如果调整后还是出现空白,可以进一步添加代理IP、随机修改请求头间隔等配置,降低被检测的概率。
内容的提问来源于stack exchange,提问作者ruserhselen
相关产品推荐
相关产品推荐

