在Python中使用yfinance从Yahoo Finance下载股票价格数据时出错

时间:2020-05-28 09:43:32

标签: python stock yfinance

我正在使用python中的yfinance库来一次下载多个股票的股票价格数据。以下是代码:

import yfinance as yf

import pandas as pd

x1 = yf.download("STNE BYND HTZ....SFET AMD", period ="1d")

我正在用空格分隔的字符串中同时传递800个股票行情。

但是,每次我运行代码时,都会出现以下错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='query1.finance.yahoo.com', port=443): Max retries exceeded with url: /v8/finance/chart/UVV?range=1d&interval=1d &includePrePost=False&events=div%2Csplits (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines','tls process server certificate', 'certificate verify failed')])")))"

运行某些代码时会出现此错误,尽管为其余代码下载了数据,但代码未编译

1 个答案:

答案 0 :(得分:0)

我认为问题出在Requests库(在yfinance中使用)。该错误表示不受信任的SSL证书。通过在请求中设置“ verify = False”,可以跳过SSL证书的验证。有关更多信息,请参见:Python Requests throwing SSLError

当我查看yfinance .py文件时,我发现如下代码行:

--- Conditions: IsProd: !Equals [!ImportValue EnvType, 'prod'] Resources: MyBucket2: Condition: IsProd Type: AWS::S3::Bucket

您可能需要修改这些行以包含'verify = False'语句,如下所示:r = _requests.get(url=url, proxies=proxy).json()

我不确定使用代理时是否允许使用“ verify = False”。您可以尝试将其添加到.py文件的请求行中,看看是否能解决问题。

对于它的价值,我尝试使用〜500个代码(S&P500列表)运行它,但无法重现此错误。如果您发布了正在使用的800项股票清单,我可以尝试一下。

我的输出:

request.get(url=url, proxies=proxy, verify=False).json()