نسب درجة الحرارة الحقيقية وتوقعات Yandex.Weather

في الصباح ، عندما أتناول وجبة الإفطار ، أنظر من خلال Yandex. الطقس يوميًا تقريبًا وأتعرف بشكل دوري على deja vu ، ولكن العكس فقط. أنت تنظر - تم الإشارة إلى درجة حرارة واحدة لعطلة نهاية الأسبوع ، وفي اليوم التالي الذي تنظر فيه - تم بالفعل وعدك بمؤشرات درجة الحرارة الأخرى. ببطء بدأت تشك في ذاكرتك (30 عامًا - هذه بالفعل بدأت الرابعة). ولكن لكي لا أفقد القلب تمامًا ، قررت التحقق من مدى ارتباط التوقعات مع درجة الحرارة الحقيقية.


الخط الأزرق هو درجة الحرارة الحقيقية. المنطقة البرتقالية هي نطاق التنبؤات.


الصورة
مصدر الصورة .


بعض التفاصيل الفنية


بادئ ذي بدء ، قمت بتثبيت برنامج نصي في التيجان يحفظ صفحة Yandex.Weather كل ساعة كملف html وتركها للعمل لفترة من الوقت.


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

الصورة


, , . .


:


الصورة
الصورة



, .

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


All Articles