url = 'https://query2.finance.yahoo.com/v7/finance/quote?symbols=TSLA&fields=regularMarketPreviousClose®ion=US&lang=en-US'
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
data = requests.get(url,headers=headers)
prepost_data = data.json()
最近,雅虎财经似乎更改了他们的 V7 API,要求每个请求都需要 cookie。运行上面的代码,我收到 Invalid Crumb 错误
{"finance":{"result":null,"error":{"code":"Unauthorized","description":"Invalid Crumb"}}}
这个问题似乎在这个 Github 存储库中也已知:https://github.com/joshuaulrich/quantmod/issues/382 https://github.com/joshuaulrich/quantmod/issues/382
他们似乎有一个有效的补丁:https://github.com/joshuaulrich/quantmod/pull/383/commits https://github.com/joshuaulrich/quantmod/pull/383/commits
但代码都是用 R 编写的...有人知道如何将其翻译成 Python 吗?
这对我有用。
- 对 URL 进行 HTTP GET 调用https://fr.yahoo.com https://fc.yahoo.com。虽然这个调用会导致 404 错误,但我们只需要它来提取
set-cookie
来自响应标头,然后在后续调用中使用
- 现在对 URL 进行 HTTP GET 调用https://query2.finance.yahoo.com/v1/test/getcrumb https://query2.finance.yahoo.com/v1/test/getcrumb,通过包含从之前的响应标头中获取的 cookie。此调用将检索碎屑值。
- Replace
[crumb-value]
在以下 URL 中并使用 cookie 进行 HTTP GET 调用
- 缓存 cookie 值和 crumb 值以跳过前两个步骤
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)