CoderCastrov logo
CoderCastrov
Питон

Освоение Python с помощью создания парсера для трендовых новостей на kumparan.com - Часть 3

Освоение Python с помощью создания парсера для трендовых новостей на kumparan.com - Часть 3
просмотров
4 мин чтение
#Питон

Парсинг kumparan.com

После того, как вы понимаете, что делают модули beautifulsoup4 и requests, давайте создадим программу парсера. Я буду парсить данные о трендовых новостях с этого веб-сайта. Вы можете изучить элементы этого веб-сайта, чтобы увидеть HTML-код.

Коллекция трендовых новостей на этой неделе - kumparan

Трендовые новости на этой неделе: водитель ссорится с парковщиком в Бантуле, черный Мерседес был разрушен толпой

kumparan.com

Страница, которую я хочу спарсить, выглядит так. Я получу заголовок трендовых новостей, автора и время публикации.

Трендовые новости

Вы можете найти код на моем GitHub:

GitHub - RiauTechDev/Kumparan-TrendingNews

Вы не можете выполнить это действие в данный момент. Вы вошли в систему в другой вкладке или окне. Вы вышли из системы в другой вкладке или окне.

github.com

И вот весь мой код:

Я разобью код, чтобы мы могли понять, что делает каждая строка. Основная структура моего кода состоит из 4 разделов: импорт, определение функции для извлечения данных о популярных новостях, определение функции для отображения извлеченных данных и пример кода, как его использовать.

4 Sections

На строках 1 и 2 импортируются модули requests и beautifulsoup4. Прежде чем вы сможете импортировать этот модуль, убедитесь, что пакет установлен. Вы можете посмотреть, как это сделать в моих предыдущих историях Часть 2.

Импорт

После импорта модуля я создаю функцию для извлечения данных о популярных новостях, называемую data_extraction(). Под этим я помещаю конструкцию try-except Python, чтобы проверить код, написанный в операторе 'try', на наличие ошибок. Если возникает ошибка, выполняется содержимое внутри 'except'. Таким образом, в этом случае, если возникает ошибка, будет возвращен текст 'Fail Requests'. Если проблем нет, то запрошенные данные будут сохранены в переменной 'content'.

data_extraction()

В функции data_extraction() я создаю оператор if. Здесь происходит процесс извлечения. Если код состояния переменной 'content' равен 200, то выполняется код внутри оператора if. Код состояния 200 означает "Успешные ответы". Вы можете найти подробную информацию об этом, выполнив поиск "HTTP response status code" в Google.

Затем мы извлекаем данные из content с помощью BeautifulSoup и сохраняем их в переменную soup.

Зататем я смотрю на элемент инспекции и нахожу место расположения популярных новостей в HTML-коде. Я обнаружил, что все данные, которые мне нужны, сохранены в заголовке 'div' с классом 'Viewweb__StyledView-sc-1ajfkkc-0 cFmAia'. Поэтому я пишу код, чтобы найти его в переменной soup, а затем сохранить его в переменной main.

Из main я ищу заголовок, автора и время.

В переменной time я вызываю только значения, начиная с индекса 2 и с шагом 3. Это потому, что есть данные, которые мне не нужны, но используют тот же заголовок и класс, что и time, поэтому мне нужно получить только нужные данные.

time

После получения всех необходимых данных я помещаю их во вложенный словарь. Это похоже на то, что у нас есть словарь внутри словаря.

Сначала я определяю значение i со значением 0, tnews как словарь.

Затем я выполняю цикл по ti в заголовке, thor в авторе и time во времени. Я помещаю это в словарь с ключом "News" и его порядком со значением заголовка, автора и времени внутри него. Затем возвращаю значение в tnews.

Таким образом, данные будут более структурированными, и нам будет легко вызывать их позже, или, возможно, другим людям, которые используют этот пакет.

nested dictionary

Во второй функции я использую данные из словаря tnews и отображаю их более читаемым образом. Имя функции show_data() с параметром result. Если значение result равно None, то будет выведен текст "Данные о популярных новостях не найдены", и программа вернется в начало. В противном случае, если данные существуют, будет выполнен цикл по ключу и значению внутри result.items(), затем будет выведен текст "Популярные новости", где новости - это ключ словаря в result. Внутри этого цикла перед переходом к следующему ключу будет выполнен цикл по ключу и значению, которые являются заголовком, автором и временем публикации.

def означает, что мы только определяем функцию. Программа не будет выполнена, если нет вызова функции. Таким образом, чтобы показать, как работает наш код, мы создаем оператор if, в котором этот код будет выполняться только при запуске его из самого файла. Таким образом предотвращается выполнение кода внутри оператора if, когда мы его импортируем.

if statement

Вот весь код, который нам нужен для парсинга данных о популярных новостях с kumparan.com. Структура любого процесса парсинга будет примерно такой. Вы извлекаете данные, сохраняете их в какой-то форме, а затем отображаете данные.

Процесс парсинга популярных новостей завершен. В следующей истории я объясню, как загрузить этот пакет в PyPi, чтобы другие могли легко установить его и использовать из PyPi с помощью команды Pip. До свидания!

Больше контента на plainenglish.io. Подпишитесь на наш бесплатный еженедельный бюллетень. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.