Парсинг с помощью Python
Table Of Content
Python - один из самых популярных языков программирования в настоящее время, предпочтительный для начинающих программировать из-за его низкого порога вхождения.
Python - язык с динамической типизацией, что лично мне не нравится, но это не означает, что он не продуктивен или даже весел при написании кода.
Я не хочу вдаваться в традиционные детали, такие как типы данных, создание CRUD и т. д. Моя идея - пойти немного дальше и создать простой парсер, чтобы постепенно изучать язык.
Мы собираемся обратиться к популярному веб-сайту в моем регионе, где в разделе технологии есть некоторые статьи, которые мы собираемся взять. Следует отметить, что этот процесс является учебным, мы просто получаем данные, ничего странного, что может навредить кому-либо.
Мы будем использовать библиотеку Beautiful Soup для Python, которая позволяет извлекать информацию из контента в формате HTML или XML. Для этого необходимо указать парсер, который отвечает за преобразование документа HTML или XML в сложное дерево объектов Python. Это позволяет, например, взаимодействовать с элементами веб-страницы, как если бы мы использовали инструменты разработчика браузера.
Основная идея при парсинге заключается в понимании тегов HTML, которые мы хотим захватить, понимая, что над всеми слоями у нас всегда будет div, который охватывает весь контент, и что этот контент имеет потомков.
Дети и потомки элемента в Beautiful Soup
- Атрибут
contents
: Возвращает список всех первоуровневых детей объекта. - Используя генератор
children
: Возвращает итератор для перебора первоуровневых детей объекта. - С помощью генератора
descendants
: Этот атрибут возвращает итератор, который позволяет перебирать всех потомков объекта. Независимо от уровня вложенности.
В предыдущем коде мы получили данные, относящиеся к заголовку новости, описанию и дате публикации, результат этого процесса выглядит следующим образом:
Этот парсинг довольно простой и предоставляет линейную и неупорядоченную информацию, возможно, идеальным решением будет получить элементы отдельно и предоставить их в правильном формате для чтения. Если у вас есть идеи, как улучшить этот код, пожалуйста, делитесь, цель - постоянное совершенствование, репозиторий находится ЗДЕСЬ
Также я буду экспериментировать с другими случаями использования, чтобы увидеть, что я могу найти на пути.
Приветствую!