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

如何在Python中使用Selenium从WebElement提取股票代码属性值

错误原因

  • find_element_by_name方法的作用是查找name属性等于传入值的DOM元素,你要提取的data-current-symbol是tr标签的自定义属性,不是元素的name属性,方法调用逻辑完全错误。
  • 没有加页面加载等待逻辑,可能页面还没完成渲染就执行元素查找,也会触发元素不存在的异常。
  • 部分tr标签(比如表头行)没有data-current-symbol属性,直接遍历所有tr会拿到空值。

正确实现代码

Selenium 3.x版本写法

from selenium import webdriver
import time

StockList = []

driver = webdriver.Chrome()
url = "https://www.barchart.com/stocks/highs-lows/highs?timeFrame=1y"
driver.get(url)
# 等待页面渲染完成,也可替换为显式等待提升性能
time.sleep(3)

# 获取所有tr元素
stock_trs = driver.find_elements_by_tag_name("tr")
for tr in stock_trs:
    # 直接提取tr的自定义属性值
    symbol = tr.get_attribute("data-current-symbol")
    # 过滤无该属性的无效tr
    if symbol:
        StockList.append(symbol)

driver.quit()
print(StockList)

Selenium 4.x推荐写法(旧定位方法已废弃)

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

StockList = []

driver = webdriver.Chrome()
url = "https://www.barchart.com/stocks/highs-lows/highs?timeFrame=1y"
driver.get(url)
time.sleep(3)

# 直接用CSS选择器定位所有带目标属性的tr,省去过滤步骤
stock_trs = driver.find_elements(By.CSS_SELECTOR, "tr[data-current-symbol]")
for tr in stock_trs:
    symbol = tr.get_attribute("data-current-symbol")
    StockList.append(symbol)

driver.quit()
print(StockList)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:03