Метод получения демографических данных из номера ID с использованием Python за 4 миллисекунды (БОНУС: УЧЕБНИК ПО ПАРСИНГУ)
Table Of Content
Ассаляму алейкум уа рахматуллахи уа баракатуху.
Как и говорится в заголовке, сегодня я поделюсь с вами пошаговым руководством по получению демографической информации о человеке по номеру ID. Этот учебник включает в себя следующие шаги:
Прежде чем приступить к учебнику, давайте разберем код, который содержится в номере ID.
Номер ID состоит из 16 цифр. Первые шесть цифр представляют код региона. Первые 4 цифры можно получить из Википедии, а следующие 2 цифры я пока не нашел (хехехе). Итак, давайте спарсим эти данные с Википедии. Следующие шесть цифр (цифры с 7 по 12) представляют собой дату рождения в формате ДДММГГ (ДД = день, ММ = месяц, ГГ = две последние цифры года). Если к числу дня добавить 40, то это означает, что пол - женский, в противном случае пол - мужской. Следующие цифры (13-16) - это регистрационный код.
Готовы? Давайте начнем...
На самом деле, для этой программы нам понадобится только Python, и поскольку в Интернете уже много учебников по установке Python, я пропущу этот шаг. Кроме того, я использую Jupyter Notebook для выполнения написанного кода.
После завершения установки всего этого давайте установим пакеты pandas, requests и bs4 (Beautifulsoup). После установки всех пакетов давайте запустим наш Jupyter Notebook.
- Парсинг
Возможно, это будет самым сложным шагом (пристегните ремни безопасности).
Как и в обычном коде 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.
- Создание базы данных и функции
Затем мы просто создаем фрейм данных, заполняя столбцы соответствующими списками.
Затем я создаю функцию на Python, которая преобразует номер ID в демографические данные.
Сначала функция проверяет, что длина номера ID составляет 16 цифр. Затем мы используем ранее созданную таблицу (из спарсенных данных) для поиска первых 4 цифр в номере ID. Если первые 4 цифры ввода номера ID не найдены в таблице, будет выведен текст "неверный ввод". Наконец, мы ищем дату рождения и пол через цифры с 7 по 13, как я упоминал в начале этой статьи на Medium.
Теперь мы закончили все, остался последний шаг - тестирование! Виола!
- Тестирование!
Запустите указанный выше код, и вы получите потрясающий результат!
Обратите внимание, что каждая проверка номера ID занимает всего от 0 до 4 миллисекунд, довольно быстро, не так ли?
Спасибо за чтение этой статьи, как говорится в поговорке:
Самое лучшее письмо - письмо, которое никогда не публикуется
Так что мой текст, конечно же, имеет свои недостатки. Смело свяжитесь со мной через LinkedIn. Удачи в обучении! :)