yfinance 源码仓库解析-01


这个仓库 yfinance 是一个用于从雅虎财经(Yahoo! Finance)的 API 下载金融和市场数据的 Python 库。以下是对该仓库的详细介绍:

主要特点

  • Pythonic 接口:提供了简洁易用的 Python 接口,方便用户获取金融和市场数据。
  • 多类型数据支持:可以获取单个股票(Ticker)、多个股票(Tickers)的数据,还能下载多只股票的市场数据(download)。
  • 丰富的功能模块:包括获取市场信息(Market)、实时流式数据(WebSocketAsyncWebSocket)、搜索报价和新闻(Search)、获取行业和板块信息(SectorIndustry)以及构建筛选查询(EquityQueryScreener)等。

主要组件

  1. Ticker:用于获取单个股票的数据。
  2. Tickers:用于获取多个股票的数据。
  3. download:批量下载多只股票的市场数据。
  4. Market:获取特定市场的信息。
  5. WebSocket 和 AsyncWebSocket:提供实时流式数据。
  6. Search:搜索股票报价和新闻。
  7. Sector 和 Industry:获取行业和板块信息。
  8. EquityQuery 和 Screener:构建筛选查询来筛选市场。

安装方法

可以使用 pip 从 PyPI 安装 yfinance

$ pip install yfinance

代码结构

仓库的主要代码位于 yfinance 文件夹下,包含以下重要文件和模块: - cache.py:实现了数据缓存功能,包括时区缓存(_TzCache)和数据库管理(_TzDBManager)。 - scrapers/holders.py:用于抓取和解析股票持有者信息,包括主要持有者、机构持有者、共同基金持有者、内幕交易等信息。 - domain/market.py:定义了 Market 类,用于获取市场的状态和摘要信息。

缓存机制

yfinance 提供了缓存机制来提高数据获取的效率,特别是时区缓存。主要的缓存类和方法包括: - _TzCacheManager:管理时区缓存的初始化和获取。 - _TzCache:实现了时区缓存的具体操作,如查找(lookup)和存储(store)。 - _TzDBManager:管理时区缓存数据库的初始化、关闭和位置设置。

数据抓取和解析

scrapers/holders.py 模块中的 Holders 类负责抓取和解析股票持有者信息。主要方法包括: - _fetch:从雅虎财经 API 获取数据。 - _fetch_and_parse:调用 _fetch 方法获取数据,并解析不同类型的持有者信息。 - _parse_* 系列方法:分别解析不同类型的持有者信息,如机构持有者、共同基金持有者、内幕交易等。

法律声明

  • yfinance 是一个开源工具,使用雅虎的公开 API,仅用于研究和教育目的。
  • 该工具与雅虎公司没有关联、认可或审查关系。
  • 用户在使用下载的数据时,应参考雅虎的使用条款。

文档和贡献

  • 新的文档网站已经上线,可访问 ranaroussi.github.io/yfinance 查看详细文档。
  • 仓库包含了贡献指南(CONTRIBUTING.md)和行为准则(CODE_OF_CONDUCT.md),欢迎开发者贡献代码和反馈问题。