Proporções de temperatura real e previsão de Yandex.

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.


imagem
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";
    }
}


  • , ( );
  • 14:25

imagem


, , . .


:


imagem
imagem



, .

Source: https://habr.com/ru/post/pt400245/


All Articles