Aleksey-Voko / website4sale

Парсер для интернет-магазина

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Парсер для интернет-магазина

Демонстрационный, учебный проект

Источник данных: фабрика дверей "BRAVO"
(довольно тормозной сайт на движке ocStore)

2021


Используемые библиотеки

BeautifulSoup (bs4) - для сбора информации с веб-страниц
requests - для работы с HTTP-запросами
ruamel.yaml - парсер/эмиттер для YAML

Формат YAML выбран по той причине, что в отличие от JSON он не имеет единого глобального контейнера данных,
и таким образом в него удобно добавлять данные без перезаписи всего файла целиком.
Кроме того YAML человекочитаемый.


Вариант запуска парсера (для Windows)

  1. Перейти в директорию с проектами: > cd [директория/с/проектами]
  2. Клонировать проект: > git clone https://github.com/Aleksey-Voko/website4sale.git
  3. Перейти в рабочую директорию: > cd website4sale
  4. Создать виртуальное окружение: > py -m venv env
  5. Активировать виртуальное окружение: > env\Scripts\activate.bat
  6. Обновить pip при желании: (env)... > py -m pip install --upgrade pip
  7. Установить библиотеки: (env)... > pip install -r requirements.txt
  8. Запустить парсер: (env)... > py -m bravo

Во время работы будет создана директория website4sale\out_data с двумя файлами:

  • product_links.yaml - список ссылок на все товары
  • product_cards.yaml - собранные данные о товарах

Парсер можно остановить во время работы и перезапустить заново командой > py -m bravo, он докачает все недостающие карточки товаров, продолжив работу с места остановки.

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

При остановке парсера не сохраняется карточка товара с не до конца собранными данными о вариациях.

Для запуска парсера с нуля, например для обновления данных, достаточно удалить директорию website4sale\out_data

About

Парсер для интернет-магазина

License:MIT License


Languages

Language:Python 100.0%