CoderCastrov logo
CoderCastrov
Парсер

Парсинг веб-страниц с помощью Python

Парсинг веб-страниц с помощью Python
просмотров
5 мин чтение
#Парсер

Это лучшее место, чтобы научиться парсить веб-страницы с нуля => 🦸. (Кейс-стади с Amazon)

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

Узнайте, что такое парсинг веб-страниц и как его можно выполнить с помощью библиотеки beautiful soup в Python. Учимся на примере данных с веб-сайта Amazon.

В наше время, когда интернет богат множеством данных, и, казалось бы, данные стали новым нефтью, парсинг веб-страниц стал еще более важным и практичным для использования в различных приложениях. Парсинг веб-страниц занимается извлечением или парсингом информации с веб-сайта. Парсинг веб-страниц иногда также называют сбором данных с веб-сайта или извлечением данных с веб-сайта. Копирование текста с веб-сайта и вставка его на локальную систему также является парсингом веб-страниц. Однако это ручная задача. Обычно парсинг веб-страниц занимается автоматическим извлечением данных с помощью веб-сканеров. Веб-сканеры - это скрипты, которые подключаются к всемирной паутине с использованием протокола HTTP и позволяют вам получать данные автоматически.

Независимо от того, являетесь ли вы ученым-исследователем данных, инженером или любым другим человеком, который анализирует огромные объемы данных, умение парсить данные с веб-сайтов - полезный навык. Допустим, вы нашли данные в Интернете, и нет прямого способа их загрузить, парсинг веб-страниц с использованием Python - это навык, который вы можете использовать для извлечения данных в удобной форме, которую затем можно импортировать и использовать различными способами.

Некоторые практические применения парсинга веб-страниц могут быть:

  • Сбор резюме кандидатов с определенным навыком,
  • Извлечение твитов из Twitter с определенными хэштегами,
  • Генерация потенциальных клиентов в маркетинге,
  • Парсинг информации о продуктах и отзывов с электронных коммерческих сайтов.

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


Потенциальные проблемы парсинга веб-страниц

  • Одной из проблем, с которой вы можете столкнуться при извлечении информации с веб-сайтов, является различная структура веб-страниц. Это означает, что шаблоны веб-сайтов будут различными и уникальными, поэтому обобщение для всех веб-сайтов может быть сложным.
  • Еще одной проблемой может быть долговечность. Поскольку разработчики веб-сайтов постоянно обновляют свои сайты, нельзя полностью полагаться на один парсер на долгое время. Даже если изменения незначительны, они все равно могут создать проблемы при получении данных.

Чтобы решить вышеуказанные проблемы, можно использовать различные возможные решения. Одним из них является использование непрерывной интеграции и разработки (CI/CD) и постоянного обслуживания, так как модификации веб-сайтов будут динамическими.

Еще один более реалистичный подход - использование интерфейсов прикладного программирования (API), предлагаемых различными веб-сайтами и платформами. Например, Facebook и Twitter предоставляют API, специально разработанные для разработчиков, которые хотят экспериментировать с их данными или извлекать информацию, связанную, например, со всеми друзьями и общими друзьями, и создавать граф связей на основе этих данных. Формат данных при использовании API отличается от обычного парсинга веб-страниц, где основной формат данных - HTML.

Что такое Beautiful Soup?

Beautiful Soup - это чистая библиотека Python для извлечения структурированных данных с веб-сайта. Она позволяет разбирать данные из HTML и XML файлов. Она действует как вспомогательный модуль и взаимодействует с HTML таким же образом, как вы взаимодействуете со страницей веб-сайта с помощью других доступных инструментов разработчика.

  • Обычно она экономит часы или дни работы программистов, так как работает с вашими любимыми парсерами, такими как lxml и html5lib, чтобы предоставить органические способы навигации, поиска и изменения дерева разбора.
  • Еще одной мощной и полезной функцией Beautiful Soup является ее способность преобразовывать получаемые документы в Unicode и исходящие документы в UTF-8. Как разработчику вам не нужно об этом беспокоиться, если только документ не указывает внутреннюю кодировку или Beautiful Soup не может ее обнаружить.
  • Она также считается более быстрой по сравнению с другими общими методами парсинга или скрапинга.

Типы парсеров

Достаточно теории, верно? Итак, давайте установим Beautiful Soup и начнем изучать его возможности и функции с использованием Python.

В качестве первого шага вам нужно установить библиотеку Beautiful Soup с помощью терминала или jupyter lab. Лучший способ установить Beautiful Soup - это использовать pip, поэтому убедитесь, что у вас уже установлен модуль pip.

!pip3 install beautifulsoup4Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.7/site-packages (4.7.1)
Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python3.7/site-packages (from beautifulsoup4) (1.9.5)

Импорт необходимых библиотек

Давайте импортируем необходимые пакеты, которые вы будете использовать для парсинга данных с веб-сайта и визуализации с помощью seaborn, matplotlib и bokeh.

Парсинг лучших продаваемых книг на Amazon

URL, который вы собираетесь парсить, следующий: https://www.amazon.in/gp/bestsellers/books/). Аргумент page может быть изменен, чтобы получить данные для каждой страницы. Поэтому, чтобы получить все страницы, вам нужно будет пройти циклом по всем страницам, чтобы получить необходимый набор данных, но сначала вам нужно узнать количество страниц с веб-сайта.

Для подключения к URL и получения HTML-контента требуется следующее:

  • Определите функцию get_data, которая будет принимать номера страниц в качестве аргумента,
  • Определите user-agent, который поможет обойти определение в качестве парсера,
  • Укажите URL в requests.get и передайте заголовок user-agent в качестве аргумента,
  • Извлеките контент из requests.get,
  • Спарсите указанную страницу и присвойте ее переменной soup,

Следующим и важным шагом является определение родительского тега, под которым будут находиться все необходимые данные. Данные, которые вы собираетесь извлечь, это:

  • Название книги
  • Автор
  • Рейтинг
  • Количество оценок от покупателей
  • Цена

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

Parent Tag

Аналогично родительскому тегу, вам нужно найти атрибуты для названия книги, автора, рейтинга, количества оценок от покупателей и цены. Вам нужно перейти на веб-страницу, которую вы хотите спарсить, выбрать атрибут, щелкнуть правой кнопкой мыши и выбрать "Просмотреть код элемента". Это поможет вам найти конкретные информационные поля, которые вам нужно извлечь из HTML-страницы, как показано на рисунке ниже:

Inspect Element

Обратите внимание, что некоторые имена авторов не зарегистрированы в Amazon, поэтому вам нужно применить дополнительный find для этих авторов. В коде ниже вы найдете вложенные условия if-else для имен авторов, которые нужно извлечь.

В ячейке кода ниже будет выполнено следующее:

  • Вызовите функцию get_data внутри цикла for,
  • Цикл for будет выполняться по этой функции, начиная с 1 до количества страниц+1.
  • Поскольку вывод будет вложенным списком, вы сначала развернете список, а затем передадите его в DataFrame.
  • Наконец, сохраните dataframe в виде CSV-файла.

Чтение CSV файла

Теперь давайте загрузим CSV файл, который вы создали и сохранили в предыдущей ячейке. Опять же, это необязательный шаг; вы можете использовать непосредственно dataframe df и игнорировать следующий шаг.

(100, 5)

Форма dataframe показывает, что в вашем CSV файле есть 100 строк и 5 столбцов.

Давайте выведем первые 5 строк набора данных.

Скоро будет... Все еще здесь/!