CoderCastrov logo
CoderCastrov
Парсер

Я использовал Python, чтобы сэкономить 150€ на Amazon

Я использовал Python, чтобы сэкономить 150€ на Amazon
просмотров
5 мин чтение
#Парсер

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

Это было 2 года назад - осень 2020 года - когда я решил купить себе монитор. Я уже программировал несколько часов каждый день, и настало время работать с большими экранами (я использовал только экран своего 13-дюймового Macbook Pro).

Итак, я сделал то, что делает большинство из нас - отправился на Amazon. Когда я начал прокручивать и исследовать, я решил, что куплю ультраширокий монитор.

Да, один из тех модных мониторов, которые делают вас похожим на профессионала.

Но они были (и остаются) дорогими. Очень дорого для студента без стабильного дохода на тот момент.

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

К тому же, уже была почти Черная пятница - я хотел воспользоваться этим.

Его название было Bazar, и вот процесс, через который я прошел, чтобы его создать.

Создание инфраструктуры

Примечание: Я не буду слишком подробно описывать код. Я предоставлю его всем для использования и изучения по своему усмотрению. Вот ссылка на Github, но он не поддерживается._

Я решил создать веб-приложение. Почему? В то время я очень интересовался веб-разработкой и хотел научиться использовать Flask, поэтому этот проект позволил мне это сделать.

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

Но это работало. И работало довольно хорошо.

Лучшая часть заключалась в том, что оно было довольно настраиваемым: мы могли отслеживать определенные продукты (предоставляя конкретный URL Amazon) или более общие поиски, например "UltraWide Monitor". И все это делалось через веб-сайт с помощью очень простых форм.

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

Теперь мне нужно было отслеживать цены на продукты.

Паук

В тот момент я только начинал и не знал, что такое scrapy. Из-за моего небольшого опыта, мне пришлось использовать selenium.

И я сделал это: я использовал его без графического интерфейса и заставил его парсить цены, чтобы затем сохранить их в базе данных.

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

Ура!

Но у меня не было способа автоматизировать это... Пока.

Парсинг на регулярной основе

Я открыл для себя библиотеку schedule для Python, которая позволила мне планировать задачи и выполнять их по необходимости.

Например, я мог сделать программу парсить данные каждые 30 минут, не нужно было постоянно запускать ее. Это было очень полезно.

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

Но я не хотел держать ноутбук открытым 24/7...

Использование облачного сервиса для размещения моего приложения

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

Поэтому я выбрал бесплатный план, который предлагает Heroku. У меня было более чем достаточно возможностей для размещения приложения, позволяющего ему работать некоторое время и воспользоваться им.

Если вы никогда не пользовались Heroku, я настоятельно рекомендую его. Это просто, интуитивно понятно и мощно.

Результат

Теперь оно работало и было доступно. Я часто получал электронные письма от некоторых мониторов, время от времени снижающих свои цены: 10€, 25€, 35€...

Пока я не получил продукт со скидкой 22%. Это был 34-дюймовый широкоформатный монитор LG, который стоил 340€ до того дня, когда я получил письмо: теперь его цена составляла 270€. Мне пришлось его купить.

Я сэкономил 70€ на этом удивительном мониторе. И это было действительно полезно.

Но я совершил ошибку... Я не остановил приложение после покупки... И тогда я получил новое письмо.

На этот раз это был широкоформатный монитор Samsung, цена которого оставалась стабильной на уровне 450€ с тех пор, как я начал отслеживать его. Когда я получил письмо, его цена составляла 299€. 🤯

Это была скидка в 33%! И что удивительно, он стоил всего на 30€ дороже, чем первый, который я купил (299€ против 270€), но их первоначальные значения различались на 110€.

Поэтому я вернул первый монитор и купил второй, скидка на который составляла 150€.

На этом я остановил этот парсер. Я больше не хотел покупать и возвращать мониторы. Конец истории.

Конец Bazar's

Я поделился этим с некоторыми друзьями, и им это понравилось. Они заставили меня создать систему пользователей, чтобы у нас были отдельные аккаунты и каждый мог отслеживать свои продукты в приватном режиме, из одного приложения, размещенного на Heroku.

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

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


Заключение

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

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

Не тратьте время зря, не бойтесь и никогда не прекращайте учиться. Это мои советы для всех, кто слушает (особенно для желающих стать программистами). У вас всего 24 часа в сутках.

Используйте их с умом.