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

Python数据分析项目:如何高效批量获取Yahoo Finance股票代码?

解决Yahoo Query批量获取完整股票/加密货币代码的分页方法

Yahoo Query的get_screeners接口单次最多返回250条数据,要获取完整的代码列表,只需通过分页请求的方式,利用offset参数偏移每次请求的起始位置,循环获取直到没有更多数据。

修改后的完整代码

import yahooquery as yq
import time  # 可选,用于添加请求间隔避免限流

def get_full_symbols(screener_id):
    symbols = []
    offset = 0
    batch_size = 250  # 严格遵循API单次请求上限
    while True:
        s = yq.Screener()
        # 传入offset参数实现分页
        data = s.get_screeners(screener_id, count=batch_size, offset=offset)
        quotes = data[screener_id]['quotes']
        
        if not quotes:  # 无更多数据时终止循环
            break
            
        # 提取当前页的代码并合并到总列表
        symbols.extend([d['symbol'] for d in quotes])
        offset += batch_size
        
        # 可选:添加1秒延迟,避免频繁请求触发限流
        time.sleep(1)
    
    return symbols

# 示例:获取所有美国上市加密货币的完整代码列表
full_crypto_symbols = get_full_symbols('all_cryptocurrencies_us')
print(f"共获取到 {len(full_crypto_symbols)} 个代码")

关键说明

  • 分页逻辑:通过offset参数控制每次请求的起始位置,每次请求后偏移量增加batch_size(250),逐步覆盖所有数据
  • 终止条件:当返回的quotes为空列表时,说明已获取完所有可用数据
  • 限流防护:添加time.sleep(1)可以降低请求频率,避免触发Yahoo的API访问限制
  • 通用性:替换screener_id为其他筛选器ID(如股票类的筛选器),即可获取对应类别的完整代码列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:08:23