Нужно получить цену каждого дня на графике

Есть сайт https://investfunds.ru/etf/697/ с графиком цены, из него нужно вытащить цену каждого дня. Но копаясь в коде странице этого источника, я нахожу цену только за последние дни.

введите сюда описание изображения

Откуда тогда этот сайт берет цену актива? Мне это нужно для парсинга цены.


Ответы (1 шт):

Автор решения: Jack_oS
# import json
import requests


url = 'https://investfunds.ru/etf/697/'
date_from = '19.09.2020'
payload = {
    'action': 'chartData', 
    'data_key': 'close', 
    'date_from': date_from
    }

r = requests.get(url, params=payload)

В ответ прилетит словарь с данными, среди них - котировки с 19.09.2020 по сегодняшний день:

>>> len(r.json()['data'])
125

Даты будут в timestamp:

>>> print(r.text)
{
    "name":"FinEx USA UCITS ETF (USD)",
    "tooltip":{"valueDecimals":2,"xDateFormat":"%d.%m.%Y"},
    "data":[
        [1600635600000,4514],
        [1600722000000,4563],
        [1600808400000,4619],

        ...

        [1615928400000,5361],
        [1616014800000,5356],
        [1616101200000,5311]
    ]
}

Или, если нужна выборка не до текущей даты, добавьте date_to в payload:

payload = {
    'action': 'chartData', 
    'data_key': 'close', 
    'date_from': '12.12.2020',
    'date_to': '19.12.2020'
    }

В итоге в data - список с пятью датами и ценами закрытия:

>>> len(r.json()['data'])
5
>>> print(r.json()['data'])
[
    [1607893200000, 4959], 
    [1607979600000, 4986], 
    [1608066000000, 5006], 
    [1608152400000, 4985], 
    [1608238800000, 4996]
]
→ Ссылка