我使用Yahoo finance API的一个用例是找出给定股票的收益日期。这在2021年7月7日之前一直运行良好,但开始出现错误403 (禁止)。
在挣扎了一段时间后,我发现添加一个{'User-agent': 'Mozilla/5.0'}
头可以解决这个问题。如果你遇到了类似的问题,你可以试着看看它是否也能解决你的问题。以下是示例屏幕截图:
>>> url="https://query2.finance.yahoo.com/v10/finance/quoteSummary/PYPL?modules=calendarEvents"
>>> r=requests.get(url)
>>> r
<Response [403]>
>>> r=requests.get(url, headers={'User-agent': 'Mozilla/5.0'})
>>> r
<Response [200]>
>>> r.json()
{'quoteSummary': {'result': [{'calendarEvents': {'maxAge': 1, 'earnings': {'earningsDate': [{'raw': 1635764340, 'fmt': '2021-11-01'}, {'raw': 1636113600, 'fmt': '2021-11-05'}], 'earningsAverage': {'raw': 1.13, 'fmt': '1.13'}, 'earningsLow': {'raw': 0.97, 'fmt': '0.97'}, 'earningsHigh': {'raw': 1.27, 'fmt': '1.27'}, 'revenueAverage': {'raw': 6265160000, 'fmt': '6.27B', 'longFmt': '6,265,160,000'}, 'revenueLow': {'raw': 6041000000, 'fmt': '6.04B', 'longFmt': '6,041,000,000'}, 'revenueHigh': {'raw': 6539200000, 'fmt': '6.54B', 'longFmt': '6,539,200,000'}}, 'exDividendDate': {}, 'dividendDate': {}}}], 'error': None}}
发布于 2021-08-04 20:33:15
我也面临着类似的问题。显然,有两件事发生了变化:
截至2021年6月16日的URL为:
symbolString = 'TGT'; % look up Target prices as an example
urlBase = 'https://query1.finance.yahoo.com/v7/finance/download/'; % base as of 6/16/2021
url = [urlBase,symbolString];
然后我们显式地设置用户代理:
options = weboptions('UserAgent',''); # as of 6/16/2021 it is enough to submit a blank user agent
发布于 2021-08-15 22:07:33
你需要在你的环境中更新你的python包:
pip install yahoo-fin -U
https://stackoverflow.com/questions/68657671
复制相似问题