无法使用 pandas_datareader 从雅虎获取股票数据

Posted

技术标签:

【中文标题】无法使用 pandas_datareader 从雅虎获取股票数据【英文标题】:Unable to get stock data from yahoo with pandas_datareader 【发布时间】:2021-07-10 13:03:06 【问题描述】:

这是我的代码:

start = '2015-1-1'
end = '2020-12-31'
source = 'yahoo'

google = data.DataReader('GOOG', start=start, end=end, data_source=source).reset_index()

直到上个月我一直在使用这个代码并且它工作正常,一个月后我尝试了这个代码,现在这个代码给我抛出了错误:

Unable to read URL: https://finance.yahoo.com/quote/GOOG/history?period1=1420065000&period2=1609453799&interval=1d&frequency=1d&filter=history

我无法弄清楚,请你让我明白,为什么会这样? 谢谢你:)

【问题讨论】:

我发现了这个:***.com/questions/44045158/… 【参考方案1】:

雅虎!金融业的结构略有改变。 现在需要标头,以便在 http 请求上检索数据。完成后工作正常。

对于 pandas 和 pandas-datareader,如果您使用它,您需要升级它们。 (已经排序)。可能在所有其他使用来自 yahoo 的数据包上!这样的反向交易者等,您需要在 yahoo 上升级或添加标题!检索数据的脚本:)。

pip install --upgrade pandas
pip install --upgrade pandas-datareader

祝你有美好的一天;)。

【讨论】:

经过一周的搜索和关于雅虎金融已停产的假新闻,这就是答案。【参考方案2】:

现在,数据正在以这种方式生成。

import pandas as pd
import requests
link = 'https://finance.yahoo.com/quote/GOOG/history?period1=1420065000&period2=1609453799&interval=1d&frequency=1d&filter=history'
r = requests.get(link, headers = 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/91.0.4472.124 Safari/537.36')
pandas_data = pd.read_html(r.text)
print(pandas_data)

【讨论】:

【参考方案3】:

请将 pandas_datareader 升级到 >= 0.10.0 的版本。根据release notes,此错误已在 0.10.0 中修复。

修复了现在需要标题的 Yahoo 阅读器

【讨论】:

【参考方案4】:

Yahoo Finance 已停用其 API。试试这个蟒蛇library。

【讨论】:

以上是关于无法使用 pandas_datareader 从雅虎获取股票数据的主要内容,如果未能解决你的问题,请参考以下文章

关于pandas_datareader 无法下载Google finance的股票数据,其他选择方案

没有名为 pandas_datareader 的模块

如何修复“ImportError:无法导入名称'StringIO'”

导入 pandas_datareader 时遇到问题

pandas_datareader.data 不返回从开始到结束日期的所有股票值

pandas_datareader 的 ModuleNotFoundError:Jupyter Notebook 使用来自 conda 环境的不同包