Повний список кодів регіонів Яндекса +3
- 07.01.16 4:51 •
- Artemeey •
- # 274647 •
- Хабрахабр •
- 6 •
- 3400
- такий же як Forbes, тільки краще.
Нижче я розповім, як отримати актуальний список регіонів, але для цього необхідний доступ до API Яндекс.Маркет.
Лист в службу підтримки
Я написав на підтримку xml.yandex.ru з проханням надати список регіонів або додати можливість пошуку регіону через це ж API. Відповідь отримав досить швидко, але нічого нового не дізнався. Підтримка запропонувала використовувати список регіонів, викладений у відкритий доступ за посиланням: yandex.ru/yaca/geo.c2n.
Також вони відзначили, що надавати доступ до списку регіонів у них немає можливості (втім це підрозділ API «XML», ймовірно не має доступу до списку регіонів, хоча і використовує їх коди в своєму функціоналі).
У пошуках рішення я помітив, що регіони в сервісі Яндекс Погода мають ті ж ідентифікатори. Таким чином можна Спарс велике число регіонів пройшовши по всьому каталозі країн і міст в каталозі Яндекс Погоди.
Я почав підготовку до написання скрипта і виявив, що в цьому каталозі відсутні деякі населений пункти (міста / села).
Пошукавши в різних API Яндекса була знайдена функція в API «Яндекс Маркет». для отримання необхідних регіонів. Використовуючи це API можна отримати не тільки міста, а й їх райони і навіть список станцій метро (правда навіщо це може знадобитися невідомо).
Отримання повного актуального списку регіонів
MySql - Структура таблиці для зберігання регіонів
MySql - дані першого батьківського регіону
PHP функція для отримання регіонів
Функція виходить для батьківського регіону усі регіони - нащадки. Після цього її необхідно викликати ще раз, для отримання подпотомков і т.д.
usleep () - необхідно для дотримання обмежень API Маркета (не більше 10 запитів в секунду).
Список регіонів Яндекса (тільки країни, області та населені пункти)
Файл складається з 5 колонок: id | name | region_name | coutryCode | type | parentId. Всього близько 25000 регіонів.
Список регіонів Яндекса (.csv в .zip).