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

Selenium循环搜索问题:新搜索始终获取旧搜索元素

问题分析与解决方案

看起来你的问题出在选择器意外匹配到了首页的初始元素,而非搜索跳转后的目标页面元素。我来拆解下原因和修复方案:

为什么会重复获取第一次的结果?

你每次循环都打开新的Firefox实例,访问CoinGecko首页后输入币种名回车,但这里有个关键问题:

  • CoinGecko首页本身就展示着比特币的价格,而你用的选择器 div.text-3xl > span:nth-child(1) 刚好能匹配到这个首页元素
  • 当你回车搜索后,页面跳转需要一定时间,但你的wait.until提前捕获到了首页的这个元素,导致每次都输出比特币的价格,和你实际搜索的币种无关

修复方案

方案1:使用更精准的选择器

CoinGecko的币种详情页中,价格元素有更独特的标识,比如可以用这个只匹配详情页价格的选择器:

first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, ".price > span[data-price-target]")))

这个选择器只会锁定详情页的价格元素,不会和首页的元素冲突。

方案2:等待页面URL完成跳转

在获取元素前,先确认页面已经跳转到目标币种的详情页,比如检查URL包含对应币种的关键词:

# 等待页面URL包含当前搜索的币种名
wait.until(lambda driver: t in driver.current_url.lower())
first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "div.text-3xl > span:nth-child(1)")))

这样能确保页面完全跳转后再去获取元素,避免提前捕获首页内容。

方案3:优化浏览器实例(可选,提升效率)

你现在每次循环都打开新浏览器,不仅速度慢还浪费资源,可以改成打开一次浏览器,循环处理所有币种:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located

EXE_PATH = r'C:\geckodriver.exe'
tickers = ["bitcoin", "ethereum", "litecoin"]

with webdriver.Firefox(executable_path=EXE_PATH) as driver:
    wait = WebDriverWait(driver, 10)
    driver.get("https://coingecko.com/en")
    
    for t in tickers:
        # 每次搜索前清空输入框,避免残留内容
        search_box = driver.find_element_by_css_selector(".px-2")
        search_box.clear()
        search_box.send_keys(t + Keys.RETURN)
        
        # 等待页面跳转后获取价格
        wait.until(lambda driver: t in driver.current_url.lower())
        first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, ".price > span[data-price-target]")))
        price = first_result.get_attribute("innerHTML")
        print(f"{t}: {price}")

额外提示

  • 尽量避免使用过于通用的CSS选择器(比如div.text-3xl),这类选择器很容易匹配到页面上的无关元素
  • 复用浏览器实例时,一定要记得清空输入框,防止之前的输入内容干扰新的搜索

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:48:15