标签: yfinance

yFinance 的 JSON 解码错误 [JSONDecodeError: Expecting value: line 1 column 1 (char 0)]

过去几周我一直在使用 yfinance 来提取一些股票的历史数据。我通常在每周结束时运行该程序以存储该周的数据,但是这个问题错误只是在上周随机开始发生。下面是调用 MMM 历史价格数据的简单示例。但是,期权合约方法也会发生同样的错误。

import yfinance as yf
mmm = yf.Ticker('MMM')
mmm.history()
Run Code Online (Sandbox Code Playgroud)

错误堆栈:

JSONDecodeError                           Traceback (most recent call last)
<ipython-input-6-68e978705cca> in <module>
      1 mmm = yf.Ticker('MMM')
----> 2 mmm.history()

~/opt/anaconda3/lib/python3.8/site-packages/yfinance/base.py in history(self, period, interval, start, end, prepost, actions, auto_adjust, back_adjust, proxy, rounding, tz, **kwargs)
    155                                "Our engineers are working quickly to resolve "
    156                                "the issue. Thank you for your patience.")
--> 157         data = data.json()
    158 
    159         # Work with errors

~/opt/anaconda3/lib/python3.8/site-packages/requests/models.py in json(self, **kwargs)
    896                     # used. …
Run Code Online (Sandbox Code Playgroud)

python json algorithmic-trading yahoo-finance yfinance

11
推荐指数
3
解决办法
3517
查看次数

如何通过yfinance获取实际股价?

import yfinance as yf

stock = yf.Ticker("ABEV3.SA")

data1= stock.info


print(data1)
Run Code Online (Sandbox Code Playgroud)

有“买入”和“卖出”,但没有实际股价。

python python-3.x yfinance

10
推荐指数
4
解决办法
2万
查看次数

yfinance json.decoder.JSONDecodeError

在今天之前它一直在工作。我不知道为什么它今天不起作用。

import yfinance as yf
df = yf.Ticker('MMM').history(start='2021-01-01',end='2021-07-10')
Run Code Online (Sandbox Code Playgroud)
File "D:\anaconda3\envs\tensorflow\lib\site-packages\yfinance\base.py", line 157, in history
data = data.json()
File "D:\anaconda3\envs\tensorflow\lib\site-packages\requests\models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "D:\anaconda3\envs\tensorflow\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "D:\anaconda3\envs\tensorflow\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\anaconda3\envs\tensorflow\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)

python yfinance

8
推荐指数
1
解决办法
1263
查看次数

安装 LXML,面临“legacy-install-failure”错误

尝试在 Python 311 上安装 lxml。遇到此错误。

\n
PS C:\\Users\\chharlie\\Desktop\\code> pip install lxml\nCollecting lxml\n  Using cached lxml-4.9.1.tar.gz (3.4 MB)\n  Preparing metadata (setup.py) ... done\nBuilding wheels for collected packages: lxml\n  Building wheel for lxml (setup.py) ... error\n  error: subprocess-exited-with-error\n\n  \xc3\x97 python setup.py bdist_wheel did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [74 lines of output]\n      Building lxml version 4.9.1.\n      Building without Cython.\n      Building against pre-built libxml2 andl libxslt libraries\n      running bdist_wheel\n      running build\n      running build_py\n      creating build\n      creating build\\lib.win-amd64-cpython-311\n      creating build\\lib.win-amd64-cpython-311\\lxml\n      copying …
Run Code Online (Sandbox Code Playgroud)

python lxml python-wheel pandas-datareader yfinance

8
推荐指数
1
解决办法
1万
查看次数

无法将 yfinance 中的数据保存到 CSV 文件中

我发现库可以让我非常有效地从雅虎财经获取数据。这是一个很棒的图书馆。

问题是,我无法将数据保存到 csv 文件中。

我尝试将数据转换为 Panda Dataframe,但我认为我做得不正确,而且我得到了一堆'NaN's.

我尝试使用 Numpy 直接保存到 csv 文件中,但这也不起作用。

import yfinance as yf
import csv
import numpy as np

urls=[
'voo',
'msft'
    ]

for url in urls:
    tickerTag = yf.Ticker(url)

    print(tickerTag.actions)
    np.savetxt('DivGrabberTest.csv', tickerTag.actions, delimiter = '|')
Run Code Online (Sandbox Code Playgroud)

我可以在控制台上打印数据,这很好。请帮我将其保存为 csv。谢谢你!

python numpy yahoo-finance yfinance

7
推荐指数
1
解决办法
7579
查看次数

雅虎财经:按无后缀的 ISIN 或 Ticker 搜索

我有 ISIN、股票代码(没有后缀,例如三星005930而不是005930.KS)和国家/地区名称。当我访问雅虎财经网站时,我可以使用 ISIN 进行搜索并获得我正在寻找的股票。

当我尝试通过调用 API 端点以编程方式执行此操作时,https://query2.finance.yahoo.com/v10/finance/quoteSummary/{ TickerSymbol }?modules=financialData它并不总是有效,因为在某些情况下缺少后缀。而且我还没有找到用 ISIN 查询的方法。

那么如何使用 Yahoo Finance API 分别使用 ISIN、股票代码(无后缀)和国家名称查找股票?

谢谢

yahoo-finance yfinance

6
推荐指数
1
解决办法
4129
查看次数

ModuleNotFoundError:没有名为“yfinance”的模块 - 将雅虎财经和财务导入 Python

我使用的是 Mac 操作系统,在执行以下操作时收到错误:

import pandas as pd
import yfinance as yf
from yahoofinancials import YahooFinancials
Run Code Online (Sandbox Code Playgroud)

ModuleNotFoundError:没有名为“yfinance”的模块

我已经检查了 pip 是否安装到了最新版本,并且我已经完成了 pip list 并且 yfinance 就在那里。

我还检查过:

pip show yfinance
Name: yfinance
Version: 0.1.70
Summary: Download market data from Yahoo! Finance API
Home-page: https://github.com/ranaroussi/yfinance
Author: Ran Aroussi
Author-email: ran@aroussi.com
License: Apache
Location: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages
Requires: lxml, multitasking, numpy, pandas, requests
Required-by: 
MacBook-Air:~ User$ 
Run Code Online (Sandbox Code Playgroud)

这样就安装好了,它的路径是Python3最新的python的路径。

我真的很感激任何建议!

谢谢

[编辑]

我从默认的 Spyder 环境运行 Spyder。

python macos pip yfinance

6
推荐指数
2
解决办法
4万
查看次数

如何使 yfinance 通过 HTTP(S) 或ocks5 代理工作?

Yahoo网站可以通过浏览器中的2081端口打开(在Firefox中为HTTP和HTTPS设置代理端口2081)。端口 2081 提供 HTTP(S) 代理。

2080端口提供SOCKS5代理服务:

url="https://query1.finance.yahoo.com/v7/finance/download/MSFT"
curl --socks5-hostname 127.0.0.1:2080 $url -o msft.txt
Run Code Online (Sandbox Code Playgroud)

我现在可以下载 Yahoo 数据,并希望通过此代理使用yfinance库。

尝试方法1:

import yfinance as yf
msft = yf.Ticker("MSFT")
msft.history(proxy="http://127.0.0.1:2081")
msft.history(proxy="https://127.0.0.1:2081")
msft.history(proxy="socks5://127.0.0.1:2080")
Run Code Online (Sandbox Code Playgroud)

它们都不起作用!它们具有相同的输出:

MSFT: No price data found, symbol may be delisted (period=1mo)
Empty DataFrame
Columns: [Open, High, Low, Close, Adj Close, Volume]
Index: []
Run Code Online (Sandbox Code Playgroud)

尝试方法2:

MSFT: No price data found, symbol may be delisted (period=1mo)
Empty DataFrame
Columns: [Open, High, Low, Close, Adj Close, Volume]
Index: []
Run Code Online (Sandbox Code Playgroud)

输出:

cd ~
export …
Run Code Online (Sandbox Code Playgroud)

proxy python-3.x yfinance

6
推荐指数
1
解决办法
492
查看次数

雅虎财经,填补了两小时的延误

我使用雅虎财经(Python 中的 yfinance 库)来获取加密货币对的每日开盘价、收盘价、交易量、最小值、最大值。

我发现数据在 00:00 UTC(关闭/开放时间)重置,但新行仅在 02:00 UTC 添加。我需要最新一天 00:00 立即可用的数据。

有办法解决这个问题吗?我想我可以获取到目前为止的每分钟或每小时数据并总结数量。

pricedata = pdr.get_data_yahoo("BTC-ETH", start="2020-12-20", end="2020-12-22", interval = "1m")
Run Code Online (Sandbox Code Playgroud)

我是否缺少在 yfinance 中执行此操作的更简单方法?或者更快的 API?我会使用 alpha vantage,但他们不提供加密货币对的历史数据。

更新

我可以自己创建最后一天(19/12)的条目:

pricedata = pdr.get_data_yahoo(stock, start="2020-12-19", end="2020-12-20", interval = "1m")
Run Code Online (Sandbox Code Playgroud)

关闭:

print(pricedata['Close'][-1])
Run Code Online (Sandbox Code Playgroud)

打开:

print(pricedata['Close'][0])
Run Code Online (Sandbox Code Playgroud)

(稍微偏离但足够接近)

高的:

print(pricedata['High'].max())
Run Code Online (Sandbox Code Playgroud)

低的:

print(pricedata['Low'].min())
Run Code Online (Sandbox Code Playgroud)

但音量似乎不起作用。

print(pricedata['Volume'].sum())
Run Code Online (Sandbox Code Playgroud)

给我 50981730304,而每日报告值是 12830893778。如果我得到每小时值的总和而不是分钟值,我得到 2111141888。仍然很远......

我想一个“黑客”就是获取当前 24 小时的音量。但如果我在 01:00 UTC 得到这个信息,它就已经被“欺骗”了。老实说,我宁愿使用一个与每日历史记录同步的正确 API :)

到目前为止,我已经实施了这个修正,假设它可以改进一点(音量,只有在 00:00 UTC 检索时才有效,因为我还没有弄清楚如何在没有 2 小时延迟的情况下“返回”它):

            yesterday = datetime.strptime(_end, '%Y-%m-%d').date() - timedelta(days=1)
            yesterdayf = yesterday.strftime('%Y-%m-%d')

            # TODO check if between …
Run Code Online (Sandbox Code Playgroud)

python finance yahoo-finance yfinance

5
推荐指数
0
解决办法
965
查看次数

yfinance:操作错误(“无法打开数据库文件”)

当尝试使用 yfinance 包从 yahoo Finance 下载股票价格数据时,我收到以下错误:OperationalError('无法打开数据库文件')

看来价格只是不下载。我该如何解决此错误?我还没有在互联网上找到解决方案。

预先非常感谢您!

无法打开数据库文件

我用谷歌搜索,升级了 pip 安装,重新安装了 anaconda,重置了 Windows,调整了文件夹权限,以管理员身份运行...没有任何效果。

python stockquotes pandas yfinance

5
推荐指数
2
解决办法
1583
查看次数