Если правильно помню, то в цикле можно проверять
if (!in_array($a->href, ['#USDKZT', '#EURKZT']) ) continue;
Как вариант использовать внутренние запросы
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://kase.kz/charts/currency/history',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'symbol=USDKZT_TOM&resolution=D&from=1658040727&to=1658040727&chart_language_code=ru',
CURLOPT_HTTPHEADER => array(
'Accept: */*',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Cookie: __Host-csrftoken=КУКА; ',
'Referer: https://kase.kz/ru/currency/',
'X-CSRFToken: ТОКЕН',
'X-KL-Ajax-Request: Ajax_Request',
'X-Requested-With: XMLHttpRequest'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Правда непонятно, как часто меняются куки и токен, по идее можно делать запрос на получения куки и токена и проверить, когда она "протухнет". Обычно действуют от 1 до 24 часов.
Payload: symbol=
USDKZT_TOM&resolution=D&from=
1658040727&to=
1658040727
Время указываем текущие (или диапазон). Если указать одинаковыми:
{"c": [486.35], "t": [1658102400], "o": [482.0], "v": [131183750], "h": [487.3], "l": [482.0], "s": "ok"}