Код написан под Ubuntu, MacOS. Для работы на сервере нужен Chrome version 114 и библиотеки из requirements.txt. Примерные шаги установки описаны в run.sh. Также для работы потребуется token API Поиска по организациям яндекса и список городов для парсинга в файле cities.txt.
Цель:
сбор данных по присутствию банкоматов различных банков во всех городах РФ для выстраивания аналитики с опорой на данные по расположению конкурентов в конкретном населенном пункте.
Реализованная механика:
По API Яндекс карт получение данных по одному банкомату одного выбранного банка в городе. Список городов передается через txt файл.
Ограничения:
Лимиты: В API Яндекс карт установлен дневной лимит на кол-во запросов – 500 штук.
Города без банкоматов банка: В случае, если банкомата в городе нет, Яндекс отдает данные по банкоматам соседнего города. Задача: проверять соответствие адреса банкомата и города, в котором происходит поиск банкоматов. Проверка на вхождение города в адрес пропускает ошибки содержания наименования города в любом месте адреса (совпадение названия улицы и города поиска).
Результат главной функции данного этапа: сформированный pickle файл со словарем, содержащим наименование города из передаваемого списка городов и yandex_id первого найденного банкомата.
Пример содержания pickle файла:
По данным из pickle файла с помощью библиотеки Selenium собирается весь список банкоматов, представленных в городе из раздела chain на сайте Яндекс Карт, url = f'https://yandex.ru/maps/org/{bank_name}/{yndx_bank_id}/chain/', результатом главной функции является сохранение данных в pickle файл в виде ссылок на каждый отдельный банкомат в городе в разрезе города и банкомата.
Пример содержания pickle файла:
Парсинг данных по банкоматам с использованием библиотеки для парсинга HTML и XML документов BeautifulSoup по найденным на предыдущем шаге ссылкам на банкоматы. Сохранение распарсенных данных в csv файл.
Пример вывода данных после парсинга: