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

Chrome升级至114及更高版本后CSS选择器返回空集求助

问题原因与解决方案

谷歌搜索页面的DOM结构在Chrome 114及后续版本中发生了变更,你原使用的div.yuRUbf > a选择器对应的元素类名已被替换,导致无法定位到搜索结果链接。以下是具体解决步骤:

1. 确认当前搜索结果的DOM结构

打开Chrome开发者工具(F12),定位任意一条搜索结果的链接,查看其父级容器的类名。目前谷歌搜索结果的标准结构中,单个结果的容器通常是带有g类的div,链接的常见路径为div.g > div > a或div.g div[data-hveid] > a(可根据实际页面微调)。

2. 替换为有效的定位选择器

替换原有的CSS选择器,或改用兼容性更强的XPATH:

  • 新CSS选择器示例:
    search_results = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.g > div > a")))
    
  • XPATH定位示例:
    search_results = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='g']//a[@href]")))
    

3. 优化等待条件

优先使用visibility_of_all_elements_located而非presence_of_all_elements_located,确保元素不仅存在于DOM中,还处于可见状态,避免因元素未完全渲染导致的空集问题。

4. 增强反爬规避(可选)

  • 模拟真实用户行为:搜索后添加页面滚动操作,触发结果加载:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    
  • 优化CAPTCHA检测逻辑,直接定位验证元素而非仅检查源码:
    try:
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.recaptcha")))
        print('Captcha')
        break
    except TimeoutException:
        pass
    

修改后的完整代码示例

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
import time

# 搜索执行
search_input.send_keys(Keys.ENTER)

wait = WebDriverWait(driver, 15)

# 检查CAPTCHA
try:
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.recaptcha")))
    print('Captcha')
    break
except TimeoutException:
    pass

# 定位搜索结果
try:
    search_results = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.g > div > a")))
    print(f"找到{len(search_results)}条结果")
    for result in search_results:
        print(result.get_attribute("href"))
except TimeoutException:
    print("未找到搜索结果或页面加载超时")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:38