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

如何使用Selenium和Python有序输出加密货币名称及对应价格

问题原因及修复方案
  • 核心错误是你使用了set类型存储币种名称:Python中set是无序不重复集合,元素的存储顺序和插入顺序没有关联,后续你用zip()配对名称和价格时,自然会出现顺序错乱、匹配错误的问题
  • 遍历名称、价格时的嵌套内层循环属于冗余代码,会导致控制台重复打印内容,不会影响最终匹配结果但会干扰调试
  • 你当前用的类名iworPT、cLgOOr是CoinMarketCap前端框架动态生成的哈希类名,随时可能失效,建议后续更换更稳定的定位方式
修正后可运行代码
from selenium import webdriver

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get("https://coinmarketcap.com/")
driver.implicitly_wait(10)

# 将set替换为list,保证存储顺序和页面展示顺序一致
coins = []
coin_names = driver.find_elements_by_class_name('iworPT')
print(coin_names)

for names in coin_names:
    coins.append(names.text)
# 移除冗余的内层打印循环
for coins_val in coins:
    print(coins_val)


# 币种价格
coinsprice = []
get_coin_price = driver.find_elements_by_class_name('cLgOOr')

for price in get_coin_price:
    coinsprice.append(price.text)
# 移除冗余的内层打印循环
for price_val in coinsprice:
    print(price_val)


with open('coins.txt', 'w', encoding='utf-8') as f:
    # 两个列表顺序和页面完全一致,zip配对不会出错
    for coins_name, prices in zip(coins,coinsprice):
        f.write(coins_name + ": " + prices + "\n")

driver.close()
优化建议
  • 建议按单条加密货币条目遍历:先定位到每条币种的父元素,再从父元素下提取名称和价格,彻底避免两者顺序不匹配的问题,同时可以规避动态类名变更的影响
  • 可以添加异常捕获逻辑,避免部分元素加载失败导致整个脚本崩溃
  • Selenium 4以上版本已经弃用executable_path写法,建议使用Service对象指定驱动路径

内容的提问来源于stack exchange,提问作者Kirito-Kun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03