CoderCastrov logo
CoderCastrov
Красота

BeautifulSoup, Красивая я

BeautifulSoup, Красивая я
просмотров
3 мин чтение
#Красота

Я обожаю косметические продукты. Мне нравится смотреть на них, использовать их, говорить о них и, конечно же, покупать их. Но самая худшая часть покупательского опыта - это всегда проходить кредитной картой: а вдруг я могла бы найти лучший продукт по более низкой цене? Поэтому я решила провести небольшое исследование.

После того, как я уже немного попрактиковалась в парсинге с помощью BeautifulSoup, я решила объединить его с драйвером Selenium и создать функцию, которая будет извлекать все необходимые данные, чтобы удовлетворить мое любопытство. Мои основные вопросы были: какие продукты имеют самые высокие рейтинги? какие продукты имеют самую низкую цену? может ли продукт иметь самый высокий рейтинг И самую низкую цену? Небольшое предупреждение, это невозможно...


Парсинг

Неудивительно, самая сложная часть моего путешествия не была анализ данных, а фактическое получение данных, их очистка и перенос в pandas dataframe. Я знал, что могу использовать Beautiful Soup для парсинга веб-сайта Sephora, но я также хотел отслеживать прогресс визуально. Поэтому, помимо Soup, я решил использовать драйвер Selenium, который будет фактически нажимать на страницы, выбирать элементы и предоставлять мне данные в нужном формате.

Не забудь импортировать все, что тебе нужно!

Я хотел создать функцию, которая будет выполнять следующие действия:

  • Открывать страницу с несколькими продуктами на ней
  • Выбирать блок HTML-кода, содержащий всю информацию о продукте
  • Копировать название бренда, название продукта, цену, преобразовывать цену в число с плавающей запятой и помещать все в словарь
  • Находить класс, содержащий ссылку на страницу продукта
  • Нажимать на эту ссылку
  • Копировать количество "лайков", преобразовывать его в строку и помещать в словарь
  • Повторять все шаги для всех продуктов на странице (для удобства я решил ограничить поиск 20 продуктами на странице)
  • И, конечно же, использовать time.sleep, чтобы не быть заблокированным!

Вот что у меня получилось:

Комментарии поясняют, что делает каждый блок кода

Создание словарей

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


DataFrames и анализ

Чтобы выполнить анализ, я решил преобразовать свои словари в объекты данных pandas:

Теперь я могу определить, какие продукты являются лучшими!

Думаю, мне стоит купить Brow Wiz от Anastasia и Liner от Kat Von D из категории макияжа, так как они присутствуют в обоих таблицах.

И средства для снятия макияжа от Sephora, маску для губ от Laneige и сыворотку Truth Serum из категории ухода за кожей.

И освободить место для некоторых средств Olaplex в ванной комнате!


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