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

Базовый процесс выглядит примерно так:

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

Вот почему сегодня я хочу показать вам некоторые из основных функций, которые может предложить Beautiful Soup.

Если вас также интересуют другие библиотеки, такие как Selenium, вот другие примеры, на которые вы должны обратить внимание:
Я уже писал статьи о Selenium и Web Scraping раньше, поэтому, прежде чем вы начнете с них, я бы порекомендовал вам прочитать это статья Все о парсинге »из-за процесса настройки. А если вы уже более продвинуты в веб-парсинге, попробуйте мои продвинутые сценарии, такие как Как сэкономить деньги с помощью Python и Как создать инструмент анализа с помощью Python ».

Также хороший пример настройки среды для BeautifulSoup можно найти в статье Как сэкономить деньги с помощью Python.

Давайте сразу же приступим к делу!

Красивый суп

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

В этом терминале вы должны установить библиотеки:

pip3 install requests

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

sudo pip3 install beautifulsoup4

Это наша основная библиотека Beautiful Soup, о которой мы уже упоминали выше.

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

import requests
from bs4 import BeautifulSoup

А теперь перейдем к функциям!

получать()

Эта функция абсолютно необходима, поскольку с ее помощью вы попадете на нужную веб-страницу. Позволь мне показать тебе.

Во-первых, нам нужно найти URL-адрес, с которого мы хотим очистить (получить данные):

URL = 'https://www.amazon.de/gp/product/B0756CYWWD/ref=as_li_tl?ie=UTF8&tag=idk01e-21&camp=1638&creative=6742&linkCode=as2&creativeASIN=B0756CYWWD&linkId=868d0edc56c291dbff697d1692708240'
headers = {"User-agent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}

Я взял случайный продукт Amazon, и с помощью функции get мы собираемся получить доступ к данным с веб-страницы. Заголовки - это просто определение вашего браузера. Вы можете проверить свое здесь.

Используя библиотеку запросов, мы переходим к желаемому URL-адресу с определенными заголовками.
После этого мы создаем экземпляр объекта «soup», который мы можем использовать для поиска всего, что мы хотим на странице.

page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

BeautifulSoup (,) создает структуру данных, представляющую проанализированный документ HTML или XML.
Большинство методов, которые вы вызываете для объекта BeautifulSoup, унаследованы от PageElement или Tag.
Внутри этот класс определяет основные интерфейс, вызываемый построителями деревьев при преобразовании документа HTML / XML в структуру данных. Интерфейс абстрагирует различия между парсерами.

Теперь мы можем перейти к следующей функции, которая фактически ищет только что созданный объект.

найти()

С помощью функции find () мы можем искать что угодно на нашей веб-странице.
Допустим, мы хотим получить название и цену продукта на основе их идентификаторов.

title = soup.find(id="productTitle").get_text()
price = soup.find(id="priceblock_ourprice").get_text()

Идентификатор этих веб-элементов можно найти, нажав F12 на клавиатуре или щелкнув правой кнопкой мыши ›« Проверить ».

Давайте внимательно посмотрим, что там только что произошло!

get_text ()

Как вы можете видеть в предыдущей функции, мы использовали get_text () для извлечения текстовой части названия и цены вновь найденных элементов.

Но прежде чем мы перейдем к окончательным результатам, мы должны выполнить еще несколько вещей с нашим продуктом, чтобы получить идеальный результат.

полоска()

Метод strip () возвращает копию строки с удаленными начальными и конечными символами (в зависимости от переданного строкового аргумента).

Мы используем эту функцию, чтобы удалить пустые места в заголовке:

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

split ()

Эта функция также имеет универсальное назначение для Python, но я также считаю ее очень полезной.
Она разбивает строку на разные части, и мы можем использовать те части, которые нам нужны.
Она работает с комбинацией разделитель и строка.

Мы используем sep в качестве разделителя в строке цены и преобразуем ее в целое число (целое число).

replace () просто заменяет "." пустой строкой.

sep = ','
con_price = price.split(sep, 1)[0]
converted_price = int(con_price.replace('.', ''))

Вот окончательные результаты:

Я поместил для вас полный код в этот Gist:

Просто проверьте свои заголовки, прежде чем выполнять его.

Если вы хотите запустить его, вот команда терминала:

python3 bs_tutorial.py

Мы сделали!

Последние слова

Как упоминалось ранее, я не в первый раз пишу о Beautiful Soup, Selenium и веб-парсинге в целом. Есть еще много функций, которые я хотел бы охватить, и многие другие будут в будущем. Надеюсь, вам понравился этот урок, и, чтобы не отставать, подписывайтесь на меня, чтобы узнать больше!

Спасибо за чтение!