我正在使用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')])")))"
运行某些代码时会出现此错误,尽管为其余代码下载了数据,但代码未编译
答案 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()