Оставьте свои контакты
И я свяжусь с Вами в течение 5 минут.
Как получить
список регионов в Яндексе?
Или рассказ о том, как я искал ID города Красный Сулин.
Задача
Необходимо было найти полный список ID городов и регионов в Яндексе.

Список ID регионов необходим для парсинга выдачи Яндекса и директа.

Для проверки полноты списка, взят один из нужных городов: Красный Сулин
Решение
Список регионов, который предоставляет сам Яндекс - не подходит!
https://yandex.ru/yaca/geo.c2n

Список регионов из API Яндекс Директа - тоже оказался не полным
http://www.iqcontext.ru/wordstat/getregions.php

Решено было получить данные непосредственно из самого поиска Яндекса,
а именно со страницы по выбору региона поиска.
https://yandex.ru/tune/geo/
Механика получения данных
Когда в настройках Яндекса начинаешь искать нужный регион, Яндекс выводит подсказки.

Это означает, что Яндекс обращается куда-то для выбора регионов.

Соответственно нужно туда же обратиться, и так-же получить список регионов. :)
При помощи анализа кода и обращений к внешним скриптам, был найден протокол получения данных.

Адрес обращения Яндекса для вывода подсказок при поиске региона:

suggest-maps.yandex.ru/suggest-geo
?search_type=tune
&v=9
&results=20
&lang=ru_RU
&callback=jQuery
&part=%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9+
&ll=40.05799%2C47.894709

Разобравшись в переменных, стало понятно что:

v - Это версия формата вывода данных в JSON. На текущий момент их 9.
results - Количество ответов в выдачи. Максимум можно получить 20 значений
lang - Язык ответа.
callback - Формат вывода данных.
part - сам запрос. Первые буквы названия региона.
ll - Координаты, откуда идет запрос. Ответ данных зависит от региона запроса.

В результате выдаются данные в формате JSON, которые содержат название региона и искомый ID (geoid).
Осталось получить список всех регионов. Это усложняется тем, что Яндекс за раз выдает только по 20 регионов.

Соответственно, я решил перебрать всевозможные комбинации букв и цифр, и по каждой комбинации собрать данные подсказки и сохранить все в базу данных.

а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Множественным перебором данных получаются следующие комбинации:
a
aa
aaa
aaб
aaв
и так далее...

Все эти комбинации отправляются в Яндекс и собираются полученные данные.
Таким образом можно получить все необходимые регионы и Яндекса.

Что и было сделано! :)
Список регионов в Яндексе
В итоге, было найдено 36140 различных регионов в Яндексе

Данный список является самым подробным списком регионов в Яндексе, из всех найденных мною в интернете.


Скачать список регионов Яндекса
Мои контакты
Пишите и звоните в любое время!
+7 926 582-12-27
Dobrov@DobrovKonstantin.ru
Москва
Made on
Tilda