Как получить стоимость акции с Yahoo Finance
Есть запрос
https://query2.finance.yahoo.com/v10/finance/quoteSummary/MAIL.ME?modules=price
Выдаёт вот такую портянку
{"quoteSummary":{"result":[{"price":{"maxAge":1,"preMarketChange":{},"preMarketPrice":{},"postMarketChange":{},"postMarketPrice":{},"regularMarketChangePercent":{"raw":-0.014701826,"fmt":"-1.47%"},"regularMarketChange":{"raw":-31.800049,"fmt":"-31.80"},"regularMarketTime":1597923042,"priceHint":{"raw":2,"fmt":"2","longFmt":"2"},"regularMarketPrice":{"raw":2131.2,"fmt":"2,131.20"},"regularMarketDayHigh":{"raw":2189.2,"fmt":"2,189.20"},"regularMarketDayLow":{"raw":2120.6,"fmt":"2,120.60"},"regularMarketVolume":{"raw":291916,"fmt":"291.92k","longFmt":"291,916.00"},"averageDailyVolume10Day":{},"averageDailyVolume3Month":{},"regularMarketPreviousClose":{"raw":2163.0,"fmt":"2,163.00"},"regularMarketSource":"FREE_REALTIME","regularMarketOpen":{"raw":2160.0,"fmt":"2,160.00"},"strikePrice":{},"openInterest":{},"exchange":"MCX","exchangeName":"MCX","exchangeDataDelayedBy":0,"marketState":"REGULAR","quoteType":"EQUITY","symbol":"MAIL.ME","underlyingSymbol":null,"shortName":"MAIL.RU GROUP LTD","longName":"Mail.ru Group Limited","currency":"RUB","quoteSourceName":"Free Realtime Quote","currencySymbol":"руб.","fromCurrency":null,"toCurrency":null,"lastMarket":null,"volume24Hr":{},"volumeAllCurrencies":{},"circulatingSupply":{},"marketCap":{}}}],"error":null}}
Из раздела "regularMarketPrice" мне нужно получить 2131.2
Нашел как это сделать вот тут https://habr.com/ru/post/505674/ , для этого используется json, а именно JSON.quoteSummary.result[0].price.regularMarketPrice.raw
Подскажите как прописать чтобы скрипт выдавал только цену
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Пример:
import json
from dpath.util import values as dp_vals
data = json.loads(json_str)
res = dp_vals(data, "/**/regularMarketPrice/raw")
результат:
In [55]: res
Out[55]: [2131.2]
Автор решения: Alexey R.
→ Ссылка
Код:
import requests
r = requests.get('https://query2.finance.yahoo.com/v10/finance/quoteSummary/MAIL.ME?modules=price')
print(r.json()['quoteSummary']['result'][0]['price']['regularMarketPrice']['raw'])
Результат:
2126.8
P.S. - Значение отличается от примера из-за изменившейся цены в ответе сервиса.