Парсер пива

Основное
Цели
Решение
Результат
Дополнительно

Пиво хотите? А как много?

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

Первый парсер работает только со статической версией сайта и собирает данные и XHR ответов сервера.

Цели

  • Собрать как можно больше данных и обновлять их со временем.

Должен собирать следующие данные:

  • Название

  • Цена

  • Описание

  • Наличие

  • Ссылка

Решение

Первая часть парсера

Сначала пришлось обнаружить API сайта, который не у всех сайтов есть.

Вот так выглядит ссылка для итерации по всей базе данных сайта

https://www.beerwulf.com/en-GB/api/search/searchProducts?routeQuery=c&page={0}

После установим необходимые пакеты и создадим структуру парсера. Вот необходимые пакеты:

  • xlwt

  • lxml

  • requests

Структура:

  • .venv <- где установленные пакеты находятся

  • data <- где будут храниться результаты парсинга

  • info.md <- общая информация об парсере

  • main_render.py <- скрипт, который парсит динамические данные сайта

  • main_req.py <- скрипт, который парсит через API сайта

  • req.txt <- файл зависимостей

Результаты парсинга было решено сохранять как в формате JSON так и в виде XLS

Вторая часть парсера

Установим необходимые пакеты

  • requests_html

После залезем в вёрстку карточек пива и найдём все селекторы к необходимым данным

Спарсим и сохраним.

Результат

Как результат мы получим 2 совершенно разных парсера в одном

Где, мы можем выбирать то, как парсить и то как сохранять собранные данные

Как получить:

Дополнительные материалы

Python пакет requests_html всегда пытается скачать версию движка хромиума, которой уже нет.

Поэтому в начале скрипта для динамического парсинга пришлось указывать актуальную версию движка через переменную виртуального окружения PYPPETEER_CHROMIUM_REVISION


сердце 0
3 соединённые точки 0