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

使用Selenium+BeautifulSoup提取股票代码遇NoneType属性错误求助

解决Finviz页面提取股票代码的AttributeError问题

问题出在你遍历所有<tr>标签时,不是每一行都包含目标的screener-link-primary类<a>标签——有些行(比如表头、空行)找不到这个元素,会返回None,这时调用.text或.contents自然会触发NoneType属性错误。

修复方案:先判断元素是否存在,再提取内容

修改你的循环代码,加上非空判断,确保只处理找到目标元素的行:

for row in searchSource.findAll("tr"):
    ticker_element = row.find("a", class_="screener-link-primary")
    # 先检查元素是否存在,再执行提取操作
    if ticker_element:
        # 直接提取文本,strip()去掉可能的空格
        ticker = ticker_element.text.strip()
        print(ticker)
        # 也可以用get_text(),效果一致
        # ticker = ticker_element.get_text(strip=True)

备选方案:从URL参数中提取股票代码

如果遇到文本提取异常的情况,还可以从<a>标签的href属性里解析t参数拿到股票代码,这种方式更稳定:

from urllib.parse import urlparse, parse_qs

for row in searchSource.findAll("tr"):
    ticker_element = row.find("a", class_="screener-link-primary")
    if ticker_element:
        href = ticker_element.get("href")
        parsed_params = parse_qs(urlparse(href).query)
        ticker = parsed_params["t"][0]
        print(ticker)

之前静态页面没问题,是因为静态页面的<tr>结构更规整,所有数据行都包含目标<a>标签;而Finviz的动态页面可能存在额外的非数据行,导致部分循环迭代中ticker_element为None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:21:10