सुबह में, जब मैं नाश्ता करता हूं, मैं यैंडेक्स के माध्यम से देखता हूं। लगभग रोजाना और मुझे समय-समय पर डीजा वू की भावना मिलती है, लेकिन केवल दूसरे तरीके से। आप देखते हैं - सप्ताहांत के लिए एक तापमान का संकेत मिलता है, और अगले दिन आप देखते हैं - पहले से ही अन्य तापमान संकेतक का वादा किया जाता है। धीरे-धीरे आपको अपनी याददाश्त पर संदेह होने लगता है (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";
}
}

, , . .
:


, .