Получение GPS координат почтовых отделений по индексу
Задача: получить по известному индексу почтового отделения, его адрес, GPS координаты и другие данные..
Решение: а просто попарсим страницу почты россии: https://www.pochta.ru/offices, где есть возможность ввода индекса, а в ответ на карте отрисовываються отделения. Чуть нырнув в сетевые запросы, получаем вызов:
https://www.pochta.ru/suggestions/v2/postoffice.find-nearest-by-postalcode-vacancies
который используется самим сайтом почты для получения данных. На выходе очень приятный для парсинга выход. В общем всё оформил в виде простого скрипта:
<?php
$indexs=file_get_contents("posts.list");
$indexs=explode("\n", $indexs);
file_put_contents("res.sql", "", FILE_APPEND | LOCK_EX);
foreach ($indexs as $ind) {
wget https://www.pochta.ru/suggestions/v2/postoffice.find-nearest-by-postalcode-vacancies --header='Content-Type:application/json' --post-data '{"postalCode":"$ind","filters":[],"limit":1,"radius":100,"offset":0,"currentDateTime":"2025-10-28T15:10:00"}' -O tmp.tmp;
$js= json_decode(file_get_contents("tmp.tmp"));
if ($js!=null){
if (count($js)>0){
$otd=$js[0];
$address=$otd->addressSource;
$latitude=$otd->latitude;
$longitude=$otd->longitude;
$sql="udpate posts set name='Почтовое отделение $ind',latitude='$latitude',longitude='$longitude',address='$address' where index='$ind';\n";
echo $sql;
file_put_contents("res.sql", $sql, FILE_APPEND | LOCK_EX);
};
};
};

