CoderCastrov logo
CoderCastrov
Poshmark

Напоминания Poshmark с помощью Python (Часть 1)

Напоминания Poshmark с помощью Python (Часть 1)
просмотров
3 мин чтение
#Poshmark

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

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

В этом руководстве мы создадим скрипт с использованием Python для парсинга наших любимых поисков на Poshmark и отправки регулярных напоминаний о новых предложениях. Руководство разделено на следующие части:

В части 1 мы будем парсить любимый бренд на Poshmark и обрабатывать сырой HTML в удобные данные с помощью Python. В результате мы получим вывод в консоли, подобный следующему:

Полный код доступен в этом репозитории GitHub.


Шаг 0 — Импорт и статические переменные

Если у вас еще нет пакетов Python requests, BeautifulSoup и dateutil.parser, пожалуйста, загрузите их сейчас с помощью pip.

Я создам три константные переменные.

  • SEARCH_URL: Представляет поиск Poshmark для недавно размещенных джинсов Naked and Famous
  • HEADER: Предоставляет базовый user-agent, чтобы наш парсер не был заблокирован
  • DAYS: Ищем товары, размещенные в течение последних 4 дней

Шаг 1 — Загрузка и разбор списка Poshmark

Если мы откроем SEARCH_URL в нашем веб-браузере, мы увидим страницу с несколькими карточками разных пар джинсов.

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

В Python мы будем использовать requests для загрузки этой страницы, отправляя заголовки, которые мы создали.

Затем мы разберем HTML с помощью BeautifulSoup и извлечем все карточки товаров.

Результатом будет список HTML-блоков, как показано ниже:

[<div class="tile" data-created-at="2019-11-29 09:00:46 -0800" data-creator-handle="hola_aileenm" data-post-brand="Naked &amp; Famous Denim" data-post-price="$50" data-post-size="32" id="5de14ebe08d2c22b5f051f92"><a class="covershot-con" data-pa-attr-listing_id="5de14ebe08d2c22b5f051f92" data-pa-attr-location="listing_tile" data-pa-click-type="image" data-pa-name="listing" href="/listing/Naked-and-Famous-mens-jeans-5de14ebe08d2c22b5f051f92" title="Naked and Famous men’s jeans"><img alt="Naked &amp; Famous Denim " class="covershot add_pin_it_btn" src="https://di2ponv0v5otw.cloudfront.net/posts/2019/11/29/5de14ebe08d2c22b5f051f92/s_5de14edaa20dfce04b239d79.jpg" title="Naked &amp; Famous Denim "/></a><div class="item-details"><div class="title-condition-con d-fl ai-fs jc-sb"><a class="title" data-pa-attr-listing_id="5de14ebe08d2c22b5f051f92" data-pa-click-type="link" data-pa-name="listing" href="/listing/Naked-and-Famous-mens-jeans-5de14ebe08d2c22b5f051f92">Naked and Famous men’s jeans</a></div><div class="price">$50 <span class="original">$128</span></div><ul class="pipe"><li class="size"><a href="/category/Men-Jeans?size=32" title="Size: 32">Size: <span class="val">Waist 32</span></a>...

Шаг 2 - Извлечение атрибутов списка товаров

Мы можем использовать методы BeautifulSoup для извлечения нужных данных.

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

Выводом будет кортеж из 4 извлеченных данных:


Шаг 3 - Расчет разницы во времени

Мы хотим отфильтровать наши результаты, чтобы включить только товары, размещенные в течение последних 4 дней.

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

Выводом будет просто целое число, например 2.

Мы можем использовать вывод для фильтрации наших результатов, используя константу DAYS.


Шаг 4 - Найти недавно опубликованные элементы

Мы начнем с итерации по списку карточек продуктов.

Если разница в днях меньше, чем наша константа DAYS, мы извлечем атрибуты и добавим кортеж в наш список recent_items.

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

Вывод будет таким же, как показано в начале этого руководства:


Шаг 5 - Сохранить результаты

Последнее, что нам нужно сделать, это сохранить результаты для Части 2.

Встроенный модуль сериализации Python, pickle, справится с этой задачей.


Следующие шаги

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

Если у вас есть вопросы или если вы делаете что-то интересное с парсингом, автоматизацией и Python, мне будет интересно услышать. Оставьте мне комментарий ниже.