CoderCastrov logo
CoderCastrov
Парсер

Метод получения демографических данных из номера ID с использованием Python за 4 миллисекунды (БОНУС: УЧЕБНИК ПО ПАРСИНГУ)

Метод получения демографических данных из номера ID с использованием Python за 4 миллисекунды (БОНУС: УЧЕБНИК ПО ПАРСИНГУ)
просмотров
3 мин чтение
#Парсер
Table Of Content

    Ассаляму алейкум уа рахматуллахи уа баракатуху.

    Как и говорится в заголовке, сегодня я поделюсь с вами пошаговым руководством по получению демографической информации о человеке по номеру ID. Этот учебник включает в себя следующие шаги:

    Прежде чем приступить к учебнику, давайте разберем код, который содержится в номере ID.

    Номер ID состоит из 16 цифр. Первые шесть цифр представляют код региона. Первые 4 цифры можно получить из Википедии, а следующие 2 цифры я пока не нашел (хехехе). Итак, давайте спарсим эти данные с Википедии. Следующие шесть цифр (цифры с 7 по 12) представляют собой дату рождения в формате ДДММГГ (ДД = день, ММ = месяц, ГГ = две последние цифры года). Если к числу дня добавить 40, то это означает, что пол - женский, в противном случае пол - мужской. Следующие цифры (13-16) - это регистрационный код.

    Готовы? Давайте начнем...


    На самом деле, для этой программы нам понадобится только Python, и поскольку в Интернете уже много учебников по установке Python, я пропущу этот шаг. Кроме того, я использую Jupyter Notebook для выполнения написанного кода.

    После завершения установки всего этого давайте установим пакеты pandas, requests и bs4 (Beautifulsoup). После установки всех пакетов давайте запустим наш Jupyter Notebook.

    1. Парсинг

    Возможно, это будет самым сложным шагом (пристегните ремни безопасности).

    Как и в обычном коде Python, мы всегда начинаем с импорта пакетов. Затем, в строке 9, я определяю URL-адрес, который мы будем парсить, и получаю данные с использованием пакета requests. Мы получаем HTML-элементы с веб-сайта, указанного в начале.

    Затем, в строке 12, мы преобразуем данные (HTML-элементы) в структуру, которую можно прочитать/обработать с помощью BeautifulSoup.

    Когда данные, которые мы получили, становятся объектом soup, мы можем использовать методы, доступные для этого объекта. Наиболее часто используемым методом является findAll. Например, в строке 15, мы используем этот метод, чтобы получить все элементы HTML, которые начинаются с "table" и имеют атрибут "class=wikitable". Затем, в строке 20, с помощью того же метода, мы получаем все элементы HTML, которые начинаются с "span" и имеют атрибут "class=mw-headline".

    Чтобы было более понятно, обратите внимание на приведенный выше код. Я добавил комментарии перед каждой строкой кода, прочтите их...

    ПРИМЕЧАНИЕ: Если вы хотите получить элемент HTML, самый простой способ - посетить веб-сайт, который вы хотите спарсить, затем нажать CTRL + SHIFT + I или CTRL + U, а затем найти текст, который отображается на этом веб-сайте, посмотреть его атрибуты и вставить их в свой код soup.

    На этом этапе мы добавляем каждый элемент таблицы, который мы спарсили, в список, который мы создали для создания фрейма данных в Python-Pandas.

    1. Создание базы данных и функции

    Затем мы просто создаем фрейм данных, заполняя столбцы соответствующими списками.

    Затем я создаю функцию на Python, которая преобразует номер ID в демографические данные.

    Сначала функция проверяет, что длина номера ID составляет 16 цифр. Затем мы используем ранее созданную таблицу (из спарсенных данных) для поиска первых 4 цифр в номере ID. Если первые 4 цифры ввода номера ID не найдены в таблице, будет выведен текст "неверный ввод". Наконец, мы ищем дату рождения и пол через цифры с 7 по 13, как я упоминал в начале этой статьи на Medium.

    Теперь мы закончили все, остался последний шаг - тестирование! Виола!

    1. Тестирование!

    Запустите указанный выше код, и вы получите потрясающий результат!

    Обратите внимание, что каждая проверка номера ID занимает всего от 0 до 4 миллисекунд, довольно быстро, не так ли?


    Спасибо за чтение этой статьи, как говорится в поговорке:

    Самое лучшее письмо - письмо, которое никогда не публикуется

    Так что мой текст, конечно же, имеет свои недостатки. Смело свяжитесь со мной через LinkedIn. Удачи в обучении! :)