Selenium Chrome driver无头模式运行时随机不返回搜索结果问题求助
可行解决方案
- 替换旧版无头模式参数
你当前使用的--headless是Chrome旧版无头模式参数,其渲染逻辑与常规模式存在差异,且容易被站点反爬策略识别。替换为新版无头模式参数即可对齐常规模式的表现:
# 替换原来的options.add_argument('--headless') 为以下内容 options.add_argument('--headless=new')
- 添加浏览器指纹伪装参数
默认Headless模式的User-Agent会携带HeadlessChrome标识,且会暴露自动化运行特征,站点检测到后会返回空白内容。添加以下参数隐藏自动化特征:
# 替换为你当前Chrome版本对应的常规UA options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36') # 移除自动化控制标识 options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False)
- 修正代理配置参数
你当前配置的代理参数引号存在语法问题,可能导致随机网络请求异常,修改为:
options.add_argument("--proxy-server=direct://")
- 改用显式等待逻辑
隐式等待和强制sleep无法适配页面异步渲染逻辑,改用显式等待定位页面核心元素(比如搜索结果容器),确认元素加载完成后再执行后续操作:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待搜索结果容器加载,最长等待10秒 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '你要定位的搜索结果容器的选择器')))
内容的提问来源于stack exchange,提问作者Ayush Tiwari
相关产品推荐
相关产品推荐

