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   # 应为 3.10+
pip --version

方案一:pip 安装(推荐)

这是最简单、最标准的部署方式。

步骤 1:创建虚拟环境(推荐)

1
2
3
4
5
6
7
8
# 创建虚拟环境
python -m venv venv

# 激活(Linux/macOS)
source venv/bin/activate

# 激活(Windows)
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 # Linux/macOS
# venv\Scripts\activate # Windows

# 安装依赖
pip install .

步骤 3:开发模式安装(可选)

如果你需要修改源码,使用开发模式安装:

1
pip install -e .

方案三: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()

# 获取 ETF 持有者
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

# option: latest, top week, top owner trade
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

# period: This Week (default), Next Week, Previous Week, This Month
fearnings = Earnings(period='This Week')

# mode: financial (default), overview, valuation, ownership, performance, technical
days = fearnings.partition_days(mode='financial')

# 导出为 Excel 或 CSV
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()
# timeframe: D (default), W, M, Q, HY, Y
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
# 尝试降级 beautifulsoup4
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+:

1
2
3
4
# 检查当前版本
python --version

# 使用 pyenv 或其他工具安装新版本

依赖说明

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 # Linux/macOS

# 安装
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 请求新功能。