De manhã, quando tomo café da manhã, olho o Yandex. Tempo quase diariamente e periodicamente sinto o déjà vu, mas apenas o contrário. Você olha - uma temperatura para o fim de semana é indicada e no dia seguinte você olha - os outros indicadores de temperatura já estão prometidos. Lentamente, você começa a duvidar de sua memória (30 anos - essa já é a quarta dúzia já começou). Mas, para não desanimar completamente, decidi verificar o quanto a previsão se correlaciona com a temperatura real.
A linha azul é a temperatura real. A área laranja é o intervalo de previsões.

A fonte da imagem .
Alguns detalhes técnicos
Antes de tudo, instalei um script nas coroas que salva a página Yandex.Weather a cada hora como um arquivo html e a deixei trabalhar por um tempo.
curl https://yandex.ru/pogoda/novosibirsk > test/`date +%Y-%m-%d-%H-%M`
php , , json , , , . :
function parseFile($day) {
global $mega, $csv, $realT;
$predicts = [];
$html = file_get_html(__DIR__ . '/test/' . $day);
foreach($html->find('.forecast-brief_cols_10') as $element) {
foreach ($element->find('.forecast-brief__item-temp-day') as $s) {
$predicts[] = str_replace('−', '-', $s->plaintext);
}
}
$dayDate = date_create_from_format("Y-m-d-H-i", $day);
$dayDateString = date_format($dayDate, 'Y-m-d H:i:s');
$dayArr = explode('-', $day);
if ($dayArr[3] == 14) {
foreach($html->find('.current-weather__thermometer_type_now') as $s) {
$realT[] = [
intval(date_format($dayDate, 'U') . '000'),
intval(str_replace('−', '-', $s->plaintext))
];
}
}
for ($i = 1; $i < count($predicts); $i++) {
$nextDay = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($dayDateString)));
$nextDayArr = explode('-', $nextDay);
$line = [
'Y' => $dayArr[0],
'm' => $dayArr[1],
'd' => $dayArr[2],
'H' => $dayArr[3],
'i' => $dayArr[4],
'_m' => $nextDayArr[1],
'_d' => $nextDayArr[2],
'_C' => $predicts[$i]
];
$mega[] = $line;
$csv .= join(';', array_values($line)) . "\n";
}
}

, , . .
:


, .