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

Selenium脚本问题:前两步正常,获取Google首条搜索结果失败求助

排查并修复Selenium自动化脚本的问题

核心错误分析

  1. 搜索结果定位完全错误
    原代码通过By.NAME, "g"和By.NAME, "r"定位元素,但Google搜索结果页面不存在这些name属性的元素,这是第三步无法执行的根本原因。同时driver.find_element()返回单个元素,不能用[0]索引,需用driver.find_elements()获取元素列表(或直接定位目标元素)。

  2. h2元素遍历语法错误

    • driver.find_element(By.TAG_NAME, ‘h2’)返回单个元素,无法循环遍历,需改为driver.find_elements()。
    • 代码使用了中文单引号‘h2’,会触发语法错误,必须替换为英文单引号'h2'。
  3. 硬等待稳定性差
    依赖time.sleep()硬等待容易因网络波动、页面加载慢导致元素未就绪,建议改用显式等待提升脚本可靠性。


修正后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)  # 设置10秒超时等待

# 1. 访问Google
driver.get('https://www.google.com/')

# 2. 搜索指定关键词
search_box = wait.until(EC.presence_of_element_located((By.NAME, "q")))
search_box.send_keys('スタビジ')
search_box.submit()

# 3. 获取并点击首条搜索结果
# 定位首条结果的标题链接(匹配Google搜索页面实际结构)
first_result_link = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.g a h3")))
first_result_link.click()

# 4. 等待目标页面加载完成
wait.until(EC.presence_of_element_located((By.TAG_NAME, 'h2')))

# 5. 获取页面h2元素
h2_elements = driver.find_elements(By.TAG_NAME, 'h2')
for h2 in h2_elements:
    print(h2.text)

# 6. 截取网页截图
driver.maximize_window()
driver.save_screenshot('スタビジ.png')

# 关闭浏览器
driver.quit()

关键修正说明

  • 用WebDriverWait显式等待替代硬等待,确保元素就绪后再执行操作,避免加载超时问题。
  • 调整搜索结果定位逻辑,通过CSS选择器匹配Google搜索结果的标准结构(首条结果标题在div.g下的a标签内的h3元素)。
  • 修复h2元素遍历的语法错误,保证代码可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:28