Наш пример использования — извлечь заголовки и субтитры блогов из Medium с помощью BeautifulSoup, а затем распечатать результаты в таблице.

Если вы работаете в Data Science, вам нужны данные. Поэтому вам нужно знать, как парсить его.

Web Scraping предлагает широкий спектр приложений, включая сбор данных для проектов машинного обучения, разработку инструментов сравнения цен или работу над любыми другими новаторскими концепциями, требующими больших объемов данных.

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

Давайте погрузимся!

Содержание:

  1. Импортировать необходимые библиотеки
  2. Создать шаблон веб-скрейпинга
  3. Печать заголовков и подзаголовков блога в виде таблицы
  4. "Заключение"

1. Импортируйте необходимые библиотеки

Существует 2 типа веб-сайтов:

  • Статический: один и тот же контент доставляется каждый раз при загрузке страницы.
  • Динамический: содержимое может меняться каждый раз при загрузке страницы.

(я помещаю ссылку в конце этого поста, если вы хотите узнать больше об этом)

Чтобы установить их, вы можете запустить их, как показано ниже:

В качестве примера мы будем использовать мою страницу блога на Medium.

Запросы помогают нам извлечь весь HTML-код сайта в наш скрипт Python, чтобы мы могли работать с ним. Давайте посмотрим, как это сделать:

Если вы напечатаете этот код, вы увидите весь HTML-код страницы. Чтобы узнать больше об этом, я поместил ссылку в конце этого поста. Чем лучше вы с ним знакомы, тем легче вам будет парсить веб-страницы.

Роль BeautifulSoup заключается в том, чтобы помочь нам проанализировать HTML-код, который мы только что извлекли с помощью Requests. Тогда нам будет намного проще читать код и парсить то, что нам нужно.

2. Создайте код парсинга веб-страниц

Нам нужно проанализировать HTML-код, который мы получили ранее, с помощью библиотеки Requests, создав объект BeautifulSoup со следующим кодом:

Prettify() будет анализировать HTML-код в удобочитаемом формате. Найдите время, чтобы осмотреть его. Это обязательный шаг, чтобы иметь возможность правильно парсить веб-страницы. Вот небольшой отрывок:

Давайте остановимся здесь.

Есть один совет, с которым вам нужно ознакомиться. Чтобы увидеть HTML-код моей страницы блога, вам просто нужно щелкнуть по нему правой кнопкой мыши, а затем нажать «Проверить».

Выглядит густо и неряшливо! Мы хотим найти заголовки блогов в HTML-коде.

HTML состоит из элементов, называемых тегами . Этот тег сообщает веб-браузеру, что все, что находится внутри него, представляет собой HTML.

Если вы ищете заголовок сообщения в блоге «Улучшите свой фондовый анализ с помощью этих 2 финансовых диаграмм в Python», вы найдете его здесь ниже, наведя курсор на код HTML, он выделит его на веб-странице, как показано ниже:

Нам нужно использовать теги «div» и класс «jq jr js jt ju l», так как заголовок блога находится там.

3. Распечатайте названия блогов в виде таблицы

Мы получили список названий, и это хорошо. Теперь мы преобразуем его в фрейм данных Pandas.

Давайте отформатируем этот фрейм данных в виде таблицы с библиотекой tabulate. Вы можете прочитать мой предыдущий пост в блоге, чтобы получить более глубокое представление о нем.

Вторая задача — найти субтитры. Повторим процесс:

Как только мы преобразуем список субтитров в фрейм данных, мы видим пустую строку между каждым субтитром. Чтобы избавиться от этих пробелов, мы будем использовать здесь NumPy, чтобы заменить их значениями NaN, чтобы мы могли удалить их позже.

Теперь давайте напечатаем заголовки постов с их подзаголовками в одной таблице:

Вот конечный результат! Вы можете попробовать разные вещи: например, очистить изображения или гиперссылки.

4. Вывод

Это было мягкое введение в веб-скрейпинг. Суть в том, чтобы потратить время на просмотр HTML-кода, чтобы определить, какой контент вы хотите извлечь. Не стесняйтесь практиковаться на других сайтах, чтобы улучшить свои навыки!

Надеюсь, вам понравилось читать этот пост! Следуйте за мной на Medium для будущих сообщений. Это мотивирует меня продолжать.

Вы также можете найти меня в LinkedIn.



Использованная литература:

Статические и динамические веб-сайты: понимание разницы с примерами, преимуществами и тем, что использовать (wix.com)

Документация Beautiful Soup — Документация Beautiful Soup 4.4.0 (beautiful-soup-4.readthedocs.io)

Запросы: HTTP для людей™ — документация Requests 2.28.1

Документация Beautiful Soup (crummy.com)