finvizfinance 详细部署教程
项目概述
finvizfinance 是一个从 FinViz 网站采集金融信息的 Python 库。它提供了对股票、外汇和加密货币等多种金融数据的采集和分析能力。
核心功能:
| 功能模块 |
说明 |
| 个股信息 |
获取股票图表、基本面、技术指标、内部交易和股票新闻 |
| 新闻聚合 |
获取 FinViz 最近的金融新闻(包括 news 和 blogs) |
| 内部交易 |
获取内部交易信息(最新、本周、大股东交易) |
| 筛选器(Screener) |
根据不同的筛选条件和交易信号,以 DataFrame 形式比较股票 |
| 日历 |
获取经济日历(发布日期、影响、实际/预期/前值) |
| 财报 |
按财报日期对股票进行分区(本周、下周、上周、本月) |
| 期货 |
获取期货表现 |
| 外汇/加密 |
获取外汇和加密货币的图表与表现 |
技术栈:Python 3.10+(已放弃 Python 3.9 支持),基于 requests、BeautifulSoup、pandas 等库构建。
部署前准备
系统要求
| 项目 |
要求 |
| Python |
3.10 或更高版本(官方已放弃 3.9 支持) |
| 操作系统 |
Windows / macOS / Linux |
| 网络 |
需能访问 FinViz 网站(finviz.com) |
| 内存 |
最低 2GB |
环境检查
1 2
| python --version pip --version
|
方案一:pip 安装(推荐)
这是最简单、最标准的部署方式。
步骤 1:创建虚拟环境(推荐)
1 2 3 4 5 6 7 8
| python -m venv venv
source venv/bin/activate
venv\Scripts\activate
|
步骤 2:安装 finvizfinance
1
| pip install finvizfinance
|
步骤 3:验证安装
1
| python -c "from finvizfinance.quote import finvizfinance; print('安装成功')"
|
步骤 4:基础使用测试
1 2 3 4 5
| from finvizfinance.quote import finvizfinance
stock = finvizfinance('tsla') print(stock.ticker_fundament())
|
方案二:从源码安装(开发/最新版本)
如果你需要最新开发版本或参与贡献,可以从源码安装。
步骤 1:克隆仓库
1 2
| git clone https://github.com/lit26/finvizfinance.git cd finvizfinance
|
步骤 2:创建虚拟环境并安装
1 2 3 4 5 6 7
| python -m venv venv source venv/bin/activate
pip install .
|
步骤 3:开发模式安装(可选)
如果你需要修改源码,使用开发模式安装:
方案三:Conda 安装
如果你使用 Anaconda 或 Miniconda:
1
| conda install --channel https://repo.anaconda.cloud/repo/main-x finvizfinance
|
核心功能使用示例
1. 个股信息获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| from finvizfinance.quote import finvizfinance
stock = finvizfinance('tsla')
stock.ticker_charts()
stock_fundament = stock.ticker_fundament()
stock_description = stock.ticker_description()
stock_peer = stock.ticker_peer()
stock_etf_holders = stock.ticker_etf_holders()
outer_ratings_df = stock.ticker_outer_ratings()
news_df = stock.ticker_news()
inside_trader_df = stock.ticker_inside_trader()
|
2. 新闻获取
1 2 3 4 5 6 7 8 9 10
| from finvizfinance.news import News
fnews = News() all_news = fnews.get_news()
all_news['news'].head()
all_news['blogs'].head()
|
3. 内部交易信息
1 2 3 4 5
| from finvizfinance.insider import Insider
finsider = Insider(option='top owner trade') insider_trader = finsider.get_insider()
|
4. 筛选器使用
1 2 3 4 5 6 7
| from finvizfinance.screener.overview import Overview
foverview = Overview() filters_dict = {'Index': 'S&P 500', 'Sector': 'Basic Materials'} foverview.set_filter(filters_dict=filters_dict) df = foverview.screener_view() df.head()
|
5. 经济日历
1 2 3 4 5
| from finvizfinance.calendar import Calendar
fcalendar = Calendar() df = fcalendar.calendar() df.head()
|
6. 财报分区
1 2 3 4 5 6 7 8 9 10 11
| from finvizfinance.earnings import Earnings
fearnings = Earnings(period='This Week')
days = fearnings.partition_days(mode='financial')
fearnings.output_excel('earning_days.xlsx') fearnings.output_csv('earning_days')
|
7. 期货表现
1 2 3 4 5 6
| from finvizfinance.future import Future
ffuture = Future()
df = ffuture.performance(timeframe='D') df.head()
|
代理配置
如果你的网络环境需要代理访问 FinViz,可以配置代理:
1 2 3 4
| from finvizfinance.util import set_proxy
proxies = {'http': 'http://127.0.0.1:8080'} set_proxy(proxies)
|
项目结构说明
text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| finvizfinance/ ├── finvizfinance/ # 核心包 │ ├── quote.py # 个股信息 │ ├── news.py # 新闻 │ ├── insider.py # 内部交易 │ ├── screener/ # 筛选器 │ ├── calendar.py # 经济日历 │ ├── earnings.py # 财报 │ ├── future.py # 期货 │ ├── forex.py # 外汇 │ └── util.py # 工具函数(代理等) ├── docs/ # 文档 ├── test/ # 测试 ├── example/ # 示例 └── pyproject.toml # 项目配置
|
常见问题排查
1. Screener 报错 'NoneType' object has no attribute 'findAll'
原因:FinViz 网站 HTML 结构发生变化,或 beautifulsoup4 库版本不兼容 。
解决方案:
1 2
| pip install beautifulsoup4==4.11.1
|
如果问题仍然存在,请检查是否有最新版本的 finvizfinance 可用:
1
| pip install --upgrade finvizfinance
|
2. 缺少列数据
原因:某些列(如 Book Value per Share、Dividend 等)可能在当前版本中未实现 。
解决方案:检查项目的最新版本,或提交 Issue 请求添加这些列。
3. 网络连接问题
原因:无法访问 FinViz 网站,或触发反爬机制。
解决方案:
- 检查网络连接
- 配置代理(见上文”代理配置”部分)
- 降低请求频率
4. Python 版本不兼容
原因:使用了 Python 3.9 或更低版本。
解决方案:升级到 Python 3.10+:
依赖说明
finvizfinance 依赖以下主要库:
| 依赖 |
用途 |
| requests |
HTTP 请求 |
| beautifulsoup4 |
HTML 解析 |
| pandas |
数据处理 |
| lxml |
XML/HTML 解析 |
这些依赖会在 pip install finvizfinance 时自动安装。
测试
如果你从源码安装,可以运行测试:
1 2 3 4 5 6 7 8
| pip install pytest
pytest
pytest --run-live
|
更新与维护
更新到最新版本
1
| pip install --upgrade finvizfinance
|
查看当前版本
1 2
| import finvizfinance print(finvizfinance.__version__)
|
总结
| 部署方式 |
适用场景 |
难度 |
推荐度 |
| pip 安装 |
大多数用户 |
⭐ |
⭐⭐⭐⭐⭐ |
| 源码安装 |
开发/最新功能 |
⭐⭐ |
⭐⭐⭐⭐ |
| Conda 安装 |
Anaconda 用户 |
⭐⭐ |
⭐⭐⭐ |
对于大多数用户,pip 安装是最简单直接的选择:
1 2 3 4 5 6 7 8 9
| python -m venv venv source venv/bin/activate
pip install finvizfinance
python -c "from finvizfinance.quote import finvizfinance; stock = finvizfinance('tsla'); print(stock.ticker_fundament())"
|
安装完成后,你可以根据官方文档(https://finvizfinance.readthedocs.io/en/latest/)和本文提供的示例代码,开始使用 finvizfinance 获取和分析金融数据。如需高级功能,可以查看项目的 example/ 目录或提交 Issue 请求新功能。