Python в московском такси

Привет всем! Интернет вообще — странная штука. Иногда переходя по ссылкам заносит в тааааакие дебри, куда бы ты по собственно воле и не полез. Так и в этот раз — бурные течения Интернет-трафика занесли меня на страницу Министерства транспорта и дорожной инфраструктуры Московской области, на которой имеется проверка разрешения на работу такси. Стало интересно — можно ли спарсить всю базу такси целиком? Так и родилась первая запись из двух, которая звучит как «Python в московском такси».

Сразу скажу, что спарсить при должном опыте и терпении можно совершенно все 🙂 Вопрос только — сколько времени и нервов все это займет. Так и в этот раз — все достаточно просто, но требуемые навыки для разработки регулярных выражений у меня отсутствуют (я в принципе достаточно слаб в регулярных выражениях — это моя слабость, я о ней знаю, но вот взять, и покорить эту высоту пока не получается. Впрочем — мой оптимизм при мне 🙂 ).

Итак, поисковая форма на сайте достаточна проста:
Проверка разрешения на работу такси

Как видим — у нас имеются поля:

  • Государственный регистрационный знак
  • Полное наименование перевозчика
  • Регистрационный номер разрешения
  • Регион выдачи разрешения

Самое интересное, что клик по кнопке «Найти» выдает нам первую страницу из полного списка выданных за все время Министерством транспорта и дорожной инфраструктуры Московской области разрешений на работу такси. Вообще всех — как активных, так и аннулированных.

Теперь давайте посмотрим на ссылку, которая нам выдается. Первая страница со списком доступна по адресу: http://mtdi.mosreg.ru/deyatelnost/celevye-programmy/taksi1/proverka-razresheniya-na-rabotu-taksi?number=&name=&id=&region=ALL — что выглядит вообще скучно, но … что будет, если мы перейдем на вторую страницу? Переходим, смотрим ссылку в адресной строке, и начинаем радоваться, ибо выглядит она вот так: http://mtdi.mosreg.ru/deyatelnost/celevye-programmy/taksi1/proverka-razresheniya-na-rabotu-taksi?region=ALL&page=2 — что уже выглядит значительно интереснее. А если учесть, что кликнув на третью страницу мы увидим ссылку http://mtdi.mosreg.ru/deyatelnost/celevye-programmy/taksi1/proverka-razresheniya-na-rabotu-taksi?region=ALL&page=3 а уж напоследок (для очистки совести) — снова на первую страницу, что бы полюбоваться ссылкой http://mtdi.mosreg.ru/deyatelnost/celevye-programmy/taksi1/proverka-razresheniya-na-rabotu-taksi?region=ALL&page=1 … После подобных экспериментов можно гарантировать — все страницы с выдаваемой информацией будут отличаться только номером в конце. А значит — для парсинга информации мы можем обойтись банальным циклом (это радует).

Сразу определим, до какого момента будет работать наш цикл. Для этого наугад откроем ссылку с числом, которое по вашему мнению будет максимальным для количества выданных лицензий. Я тут тыкал-тыкал, и оказалось, что при попытке открыть ссылку http://mtdi.mosreg.ru/deyatelnost/celevye-programmy/taksi1/proverka-razresheniya-na-rabotu-taksi?region=ALL&page=70000 — эта страница отличается от других тем, что на ней нет данных о лицензиях. От этого и будем отталкиваться: цикл работает до тех пор, пока на странице есть номера лицензий (как фиксировать этот факт — разберемся позднее).

Теперь разберем — что именно нам нужно делать в цикле? А делать мы будем следующее:

  • Открывать страницы поочередно
  • Сгребать нужную информацию
  • Сохранять в Excel-файл (об это я писал ранее)
  • Переходить на следующую страницу

Пока все 🙂 Спасибо за внимание! В случае возникновения вопросов — пишите на почту или в Telegram.

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut