Демонстрационный, учебный проект
Источник данных: фабрика дверей "BRAVO"
(довольно тормозной сайт на движке ocStore)
2021
BeautifulSoup
(bs4) - для сбора информации с веб-страниц
requests - для работы с HTTP-запросами
ruamel.yaml - парсер/эмиттер для YAML
Формат YAML выбран по той причине, что в отличие от JSON он не имеет единого глобального контейнера данных,
и таким образом в него удобно добавлять данные без перезаписи всего файла целиком.
Кроме того YAML человекочитаемый.
- Перейти в директорию с проектами:
> cd [директория/с/проектами]
- Клонировать проект:
> git clone https://github.com/Aleksey-Voko/website4sale.git
- Перейти в рабочую директорию:
> cd website4sale
- Создать виртуальное окружение:
> py -m venv env
- Активировать виртуальное окружение:
> env\Scripts\activate.bat
- Обновить pip при желании:
(env)... > py -m pip install --upgrade pip
- Установить библиотеки:
(env)... > pip install -r requirements.txt
- Запустить парсер:
(env)... > py -m bravo
Во время работы будет создана директория website4sale\out_data
с двумя файлами:
product_links.yaml
- список ссылок на все товарыproduct_cards.yaml
- собранные данные о товарах
Парсер можно остановить во время работы и перезапустить заново командой > py -m bravo
,
он докачает все недостающие карточки товаров, продолжив работу с места остановки.
У большинства товаров много вариаций (иногда до сотни), каждая из которых расположена по своему адресу. Поэтому при работе с одним товаром парсер заходит на много страниц с вариациями.
При остановке парсера не сохраняется карточка товара с не до конца собранными данными о вариациях.
Для запуска парсера с нуля, например для обновления данных, достаточно удалить директорию website4sale\out_data