早上吃早餐时,我几乎每天都在Yandex上浏览,我会定期感觉到似曾相识的感觉,但反过来又是如此。您看-已指示周末的一个温度,而您看第二天-已承诺其他温度指示器。慢慢地,您开始怀疑自己的记忆力(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";
}
}

, , . .
:


, .