BeautifulSoup, Красивая я
Table Of Content
Я обожаю косметические продукты. Мне нравится смотреть на них, использовать их, говорить о них и, конечно же, покупать их. Но самая худшая часть покупательского опыта - это всегда проходить кредитной картой: а вдруг я могла бы найти лучший продукт по более низкой цене? Поэтому я решила провести небольшое исследование.
После того, как я уже немного попрактиковалась в парсинге с помощью 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 в ванной комнате!
Вы могли заметить, что ни один продукт на самом деле не имеет самой низкой цены и самого высокого рейтинга, но это не проблема. Я удовлетворюсь "одним из самых высоко оцененных". Пора делать покупки!