- Обзор
- Демонстрационная конфигурация 1С
- Использование из других скриптов (python)
- Технические детали подключения
- Форматы данных
- Примеры запросов и ответов
Здесь представлен сервис по парсингу маркетплейса Ozon.
В будущем добавятся и другие маркетплейсы, и функционал будет развиваться.
Точнее, здесь представлены программы-клиенты, которые демонстрируют подключение и работу сервисом по парсингу маркетплейса Ozon моей разработки.
На текущий момент сервис в тестовом режиме и бесплатен.
По вопросам и предложениям можете обращаться на почту telnov-vs@yandex.ru
Или telegram: @iss7gli7
На текущий момент сервис находится в активном развитии, и могут наблюдаться не соответствия описания, и сбои в работе.
Но все эти сложности потихоньку будут решены.
Репозиторий содержит файл конфигурации Ozon_1C_Configuration.dt (или же оно же как расширение Ozon_1C_Extension.cfe для типовых конфигураций). Эта конфигурация демонстрирует интеграцию с этим сервисом сканирования маркетплейсов. Решение автоматически загружает данные о товарах и ценах на основе заданных пользователем фильтров и отборов.
-
Простая интеграция: Конфигурация является демонстрационной и имеет открытый код. Все объекты имеют префикс ЮМП_ и технические специалисты могут легко перенести готовые модули в рабочие базы данных (ERP, УТ, УНФ и др.).
-
Готовое рабочее место: Базу можно использовать «из коробки» для быстрого старта, и функционал будет регулярно развиваться и дополняться.
В папке python_scripts пример использования на питоне.
Доступны варианты запуска как командной утилиты и как GUI вариант.
Там же вы найдете описание и примеры использования.
Для подключения к сервису не используется выделенный домен или статический IP.
Вместо этого, есть временный домен, который записывается в файл на GitHub.
И клиентские программы, сначала считывают этот динамическое имя, и затем уже по нему обращаются к сервису.
(считывание с GitHub: python_clients/client_tools/get_from_github.py).
Причины такой связки, отчасти, что сам сервис по сканированию МаркетПлейсов не может быть на статическом IP,
иначе его маркетплейсы быстро блокируют. Позже, когда и если сервис перейдет из тестового режима в коммерческий режим,
то приделаю более сложную сетевую развязку, которая позволит обращаться непосредственно по статистическому IP.
Отсылаемый запрос и получаемый ответ должны быть запакован - zlib,gzip,zipfile.
Если без упаковки, то тогда ограничения по количеству запрашиваемых позиций,
для страниц со списками - 50 позиций, для карточек товаров - 8 штук.
Если упакован - 1000 для списков и 50 для карточек.
Сервер отвечает в том же варианте упаковки, в каком упакован запрос.
Используются POST запросы, для подключения используются заголовки:
(реализацию можно увидеть в python_clients/client_tools/api.py)
(в том числе для не упакованных запросов)
(варианты GET и REST-API позже будут)
"Content-Type": "application/octet-stream",
"Content-Length": str(len(packed_request))
При запросах большого количества в одном запросе Ozon иногда включает проверку антибота,
и тогда парсер останавлиается и возвращает что уже нашел. Но это нужно действительно большое количество запрашивать.
Я это наблюдал редко-редко при запросах от 300 штук для страниц поиска.
Запрос формируется в виде JSON текста с указанием соответствующих полей.
Могут быть запрошены главная страница, страницы категорий и страницы продавцов, и по всем этим вариантам можно указать поисковое слово.
| Поле запроса | Описание |
|---|---|
search_string |
Строка поиска. Если не указано, парсятся все товары из категории |
url_category |
Ссылка на категорию или на страницу продавца. Если не указано, поиск идет с главной страницы |
expected_count_items |
Количество возвращаемых товаров (ограничено 1000) |
min_price |
Минимальная цена для фильтрации (опционально) |
max_price |
Максимальная цена для фильтрации (опционально) |
sorting |
Тип сортировки (значение точно как на сайте, например: "Популярное") |
format_as_csv |
Формат результата. Если false или 0 или параметр не указан - json. Если true или 1 - csv. Если символ - тогда csv с указанным символом в качестве разделителя |
| Поле | Описание |
|---|---|
position_number |
Позиция в которой товар был на сайте |
page_number |
Страница на которой товар был на сайте (условные страницы) Технический нюанс, при запросе без поискового слова (главная страница), page 3 отсутствует. |
sku |
Артикул товара |
title |
Название товара |
url |
Ссылка на карточку товара |
badge_list |
Бейджики списком |
badges |
Бейджики одной строкой через запятые |
src_card_price |
Цена c картой Озон-Банка, как она отображена на сайте |
card_price |
Цена с картой Озон-Банка, отформатированная в число |
src_fake_price |
Цена "до скидки", как она отображена на сайте |
fake_price |
Цена "до скидки", отформатированная в число |
src_rating |
Рейтинг, как он отображен на сайте |
rating |
Рейтинг, отформатированный в число |
src_review_count |
Количество отзывов, как оно отображено на сайте |
review_count |
Количество отзывов, отформатированное в число |
brand |
Бренд товара |
src_stock |
Остаток товара, как он отображен на сайте |
stock |
Остаток товара, отформатированный в число |
delivery_list |
Доставка списком |
delivery |
Доставка одной строкой через запятые |
Запросы карточек существенно медленнее чем запрос поисковых страниц.
В среднем по 5 секунд на карточку, поэтому если запрашиваете от 20 позиций,
значит и результат ждать долго.
Запрос формируется в виде JSON текста с указанием соответствующих полей.
| Поле запроса | Описание |
|---|---|
sku_list |
Список артикулов к получению |
Артикулы могут быть указаны как один артикул, так и список артикулов.
Может быть артикул как номер, и можно просто указать ссылки на карточки товаров.
При указании ссылок они могут быть просто копи-пастены из адресной строки,
включая параметры которые Озон использует для своих целей отслеживания,
и так же могут быть без начального домена, как в некоторых местах эти ссылки поставляются с ихнего сервера.
И в любой комбинации этих условий.
| Поле | Описание |
|---|---|
sku |
Артикул |
title |
Название товара |
url |
Ссылка на карточку товара |
src_stock |
Остаток товара, как он отображен на сайте |
stock |
Остаток товара, отформатированный в число |
seller_url |
Ссылка на страницу продавца |
seller_name |
Название продавца |
about_seller |
Список юридических параметров продавца |
src_rating |
Рейтинг, как он отображен на сайте |
rating |
Рейтинг, отформатированный в число |
src_card_price |
Цена c картой Озон-Банка, как она отображена на сайте |
card_price |
Цена с картой Озон-Банка, отформатированная в число |
src_regular_price |
Цена без карты Озон-Банка, как она отображена на сайте |
regular_price |
Цена без карты Озон-Банка, отформатированная в число |
characteristics |
Краткий список характеристик (полный список пока в разработке) |
aspects_variants |
Варианты характеристик доступных для выбора для заказа |
categories |
Категории которые перечислены в заголовке карточки |
{
"search_string": "вкусняшка",
"expected_count_items": 100,
"min_price": 10,
"max_price": 1000,
"sorting": "Популярные"
}
[
{
"src_sku": "2759136519",
"badge_list": [
"Цена что надо",
"Стало дешевле"
],
"src_price": "51 ₽",
"src_fake_price": "55 ₽",
"title": "Кислые конфеты драже. Вкус фруктовый",
"src_rating": "4.9",
"src_review_count": "9 671",
"brand": null,
"src_stock": null,
"delivery_list": [
"Завтра"
],
"page_number": 1,
"row_number": 1,
"position_number": 1,
"sku": 2759136519,
"url": "https://www.ozon.ru/product/kislye-konfety-drazhe-vkus-fruktovyy-2759136519/?at=Rltyp3rojIEyJqjKh6kNvz4FxlDmm1tOWqLQRSjvmNlw",
"badges": "Цена что надо,Стало дешевле",
"delivery": "Завтра",
"review_count": 9671,
"rating": 4.9,
"price": 51,
"fake_price": 55,
"stock": 0
},
{
"src_sku": "2759016743",
"badge_list": [
"Цена что надо",
"Стало дешевле"
],
"src_price": "54 ₽",
"src_fake_price": null,
"title": "Мармеладные жевательные конфеты в хрустящей оболочке. Вкус виноград",
"src_rating": "4.9",
"src_review_count": "12 609",
"brand": null,
"src_stock": null,
"delivery_list": [
"Завтра"
],
"page_number": 1,
"row_number": 2,
"position_number": 2,
"sku": 2759016743,
"url": "https://www.ozon.ru/product/marmeladnye-zhevatelnye-konfety-v-hrustyashchey-obolochke-vkus-vinograd-2759016743/?at=DqtDW8BwNHRZo8nT5rrQLLtAAoMG4f8Y9Y4Zf7nm3YQ",
"badges": "Цена что надо,Стало дешевле",
"delivery": "Завтра",
"review_count": 12609,
"rating": 4.9,
"price": 54,
"fake_price": 0,
"stock": 0
},
...
{
"sku_list": [
3172923788,
2641218448,
2940926841
]
}
[
{
"src_sku": "3172923788",
"sku": 3172923788,
"url": "https://www.ozon.ru/product/nakleyki-3172923788/",
"title": " Наклейки",
"src_stock": null,
"stock": 0,
"seller_url": "https://www.ozon.ru/seller/vybor-huayunya/",
"seller_name": "Выбор Хуаюня",
"about_seller": [
"Nanchang Kejun Cross-Border E-Commerce Co., Ltd.",
"Xinjian District, Nanchang City, Jiangxi Province",
"CN, Nanchang",
"Режим работы — согласно режиму работы Ozon"
],
"src_rating": "4.9",
"rating": 4.9,
"src_card_price": "222 ₽",
"card_price": 222,
"src_regular_price": "223 ₽",
"regular_price": 223,
"characteristics": [
{
"id": "Type_0",
"title": "Тип",
"values": [
{
"title": "Наклейки",
"url_category": null
}
]
},
{
"id": "Color_1",
"title": "Цвет",
"values": [
{
"title": "Прозрачный",
"url_category": null
}
]
}
],
"aspects_variants": [
{
"title": "Цвет",
"key": "Color",
"variants": [
{
"sku": 3172903597,
"url": "https://www.ozon.ru/product/nakleyki-3172903597/",
"availability": "inStock",
"searchableText": "бежевый",
"content": "бежевый",
"title": " Наклейки",
"src_card_price": "222 ₽",
"card_price": 222,
"src_fake_price": "553 ₽",
"fake_price": 553
},
{
"sku": 3172905397,
"url": "https://www.ozon.ru/product/nakleyki-3172905397/",
"availability": "inStock",
"searchableText": "бежевый, серый, сиреневый",
"content": "бежевый, серый, сиреневый",
"title": " Наклейки",
"src_card_price": "222 ₽",
"card_price": 222,
"src_fake_price": "638 ₽",
"fake_price": 638
},
...