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

Парсер товаров и цен для интернет-магазина Cartier

Парсер товаров и цен для интернет-магазина Cartier

Собираем информацию и изображения в интернет-магазине Cartier с помощью бесплатного парсера товаров и цен. Cartier — знаменитый французский Дом по производству ювелирных изделий и часов, который был основан в 1847 году Луи-Франсуа Картье как маленькая мастерская. Популярность к ней пришла в 1867 году после Всемирной выставки в Париже, и до сих пор изделия этой торговой марки высоко ценятся по всему миру.

Примерное количество товаров: 2000
Примерное количество запросов: 2000
Рекомендуемый план подписки: Free

ВНИМАНИЕ! Количество запросов может превышать количество товаров, потому что данные о вариациях, изображениях и др. могут парсится используя запросы к дополнительным ресурсам. Также часть данных о товаре может доставляться с помощью XHR запросов, что также увеличивает общее количество необходимых запросов.

Как пользоваться парсером товаров и цен

Для использования парсера товаров и цен с сайта магазина Cartier вы должны иметь учетную запись в нашем сервисе Diggernaut.

  1. Пройдите по этой ссылке для регистрации в сервисе Diggernaut
  2. После регистрации и подтверждения email адреса войдите в свою учетную запись
  3. Создайте проект с любый именем и описанием, если вы не знаете как, обратитесь к нашей документации
  4. Войдите во вновь созданный проект и создайте в нем диггер с любым именем, если вы не знаете как, обратитесь к нашей документации
  5. Скопируйте в буфер обмена приведенный ниже сценарий диггера и вставьте его в созданный вами диггер, если вы не знаете как, обратитесь к нашей документации
  6. Переключите режим работы диггера с Debug на Active, если вы не знаете как, обратитесь к нашей документации
  7. Запустите ваш диггер и дождитесь окончания его работы, если вы не знаете как, обратитесь к нашей документации
  8. Скачайте собранный набор данных в нужном вам формате, если вы не знаете как, обратитесь к нашей документации

В дальнейшем вы можете установить расписание для запуска вашего парсера и забирать информацию регулярно.

Сценарий парсера

---
config:
    debug: 2
    agent: Firefox
do:
- walk:
    to: http://www.cartier.com/en-us/collections.html
    do:
    - find:
        path: ul.c-navigation__ulist a
        do:
        - parse:
            attr: href
            filter: ^([^\?]+)
        - space_dedupe
        - trim
        - normalize:
            routine: replace_matched
            args:
                javascript\:: ''
        - if:
            match: \s*[a-z]+
            do:
            - normalize:
                routine: url
            - link_add:
                pool: catalog
- walk:
    to: links
    pool: catalog
    do:
    - sleep: 2
    - find:
        path: a.c-collection-link
        do:
        - parse:
            attr: href
            filter: ^([^\?]+)
        - space_dedupe
        - trim
        - normalize:
            routine: replace_matched
            args:
                javascript\:: ''
        - if:
            match: \s*[a-z]+
            do:
            - normalize:
                routine: url
            - link_add:
                pool: catalog
    - find:
        path: a.prod-link
        do:
        - parse:
            attr: href
            filter: ^([^\?]+)
        - space_dedupe
        - trim
        - normalize:
            routine: replace_matched
            args:
                javascript\:: ''
        - if:
            match: \s*[a-z]+
            do:
            - normalize:
                routine: url
            - link_add:
                pool: pages
- walk:
    to: links
    pool: pages
    do:
    - sleep: 2
    - find:
        path: div.main-container
        do:
        - variable_clear: desc
        - object_new: product
        - eval:
            routine: js
            body: '(function (){var d = new Date(); return d.toISOString()})();'
        - object_field_set:
            object: product
            field: date
        - static_get: url
        - object_field_set:
            object: product
            field: url
        - find:
            path: span.c-pdp__cta-section--product-title
            do:
            - parse
            - space_dedupe
            - trim
            - object_field_set:
                object: product
                field: name
        - register_set: Cartier
        - object_field_set:
            object: product
            field: brand
        - find:
            path: div.c-pdp__cta-section--product-ref-id>span
            do:
            - parse
            - space_dedupe
            - trim
            - if:
                match: \w+
                do:
                - variable_set: pid
                - object_field_set:
                    object: product
                    field: sku
        - find:
            in: doc
            path: meta[property="description"]
            do:
            - parse:
                attr: content
            - space_dedupe
            - trim
            - variable_set: desc
        - find:
            path: div.c-pdp__desc--content
            do:
            - parse
            - space_dedupe
            - trim
            - variable_set: desc
        - variable_get: desc
        - object_field_set:
            object: product
            field: description
        - find:
            path: div.c-pdp__cta-section--product-price
            do:
            - find:
                path: div.price
                do:
                - parse
                - normalize:
                    routine: replace_matched
                    args:
                        \$: USD
                - object_field_set:
                    object: product
                    field: currency
                - parse:
                    filter:
                    - ([0-9\.\,]+)\s*-
                    - ([0-9\.\,]+)
                - normalize:
                    routine: replace_substring
                    args:
                        \,: ''
                - space_dedupe
                - trim
                - object_field_set:
                    object: product
                    type: float
                    field: price
        - find:
            path: ul.c-breadcrumb__list>li.c-breadcrumb__list-item>a
            do:
            - parse
            - space_dedupe
            - trim
            - normalize:
                routine: replace_matched
                args:
                    Collections: ''
                    Categories: ''
            - if:
                match: \w+
                do:
                - object_field_set:
                    object: product
                    joinby: "|"
                    field: categories
        - find:
            path: div.c-pdp__image--wrapper
            do:
            - parse:
                attr: data-src
            - space_dedupe
            - trim
            - if:
                match: \w+
                do:
                - normalize:
                    routine: url
                - object_field_set:
                    object: product
                    joinby: "|"
                    field: images
        - object_save:
            name: product

Пример данных, собранных парсером с сайта

Ниже приведен пример датасета с несколькими товарами в формате JSON (для наглядности). Датасет может быть скачан и как CSV, XLSX, XML, и любой другой текстовый формат используя темплейтный подход.

[{
    "product": {
        "brand": "Cartier",
        "categories": "Watches|Women's watches|Crash",
        "currency": "USD",
        "date": "2017-12-27T10:58:53.896Z",
        "description": "Created in 1967 in *Swinging London*, the Crash watch expresses the sparkling, carefree spirit of an era that was all about complete freedom. The unlikely design of this watch could only have been conceived by Cartier, the great maker of shaped watches. Passionate and in touch with the spirit of the times, it sought to create a unique watch that would capture the joyous burst of rebellion and pop culture that shook up the conformism of the time.",
        "images": "http://www.cartier.com/content/dam/rcq/car/59/37/24/593724.png|http://www.cartier.com/content/dam/rcq/car/59/29/55/592955.png",
        "name": "Crash watch",
        "price": 133000,
        "sku": "HPI00654",
        "url": "http://www.cartier.com/en-us/collections/watches/womens-watches/crash/hpi00654-crash-watch.html"
    }
}
,{
    "product": {
        "brand": "Cartier",
        "categories": "Watches|Gifts|Cartier Classics",
        "currency": "USD",
        "date": "2017-12-27T10:58:57.333Z",
        "description": "Louis Cartier created the Santos watch in 1904, sealing his friendship with the aviator Alberto Santos Dumont. The famous aviator's wish was granted: he could check the time while flying. The dial's rounded angles and exposed screws made this an iconic timepiece. Cartier marked the centenary of the watch with the introduction of a new version.",
        "images": "http://www.cartier.com/content/dam/rcq/car/58/46/40/584640.png|http://www.cartier.com/content/dam/rcq/car/15/35/39/2/1535392.png",
        "name": "Santos 100 watch",
        "price": 7000,
        "sku": "W20073X8",
        "url": "http://www.cartier.com/en-us/collections/watches/selections/cartier-classics/w20073x8-santos-100-watch.html"
    }
}
,{
    "product": {
        "brand": "Cartier",
        "categories": "Watches|Gifts|Cartier Classics",
        "currency": "USD",
        "date": "2017-12-27T10:59:00.589Z",
        "description": "The Tank story takes an unexpected turn with the Tank Anglaise. This variation of the distinctive features of the Tank recreates the perfect alignment of the original thanks to a winding mechanism seamlessly incorporated into the case. Featuring a concentrated form and reinforced lines, the streamlined design reinterprets the original model and gives it a new dimension.",
        "images": "http://www.cartier.com/content/dam/rcq/car/10/28/14/2/1028142.png",
        "name": "Tank Anglaise watch",
        "price": 9100,
        "sku": "W5310047",
        "url": "http://www.cartier.com/en-us/collections/watches/selections/cartier-classics/w5310047-tank-anglaise-watch.html"
    }
}]
Михаил Сисин Со-основатель облачного сервиса по сбору информации и парсингу сайтов Diggernaut. Работает в области сбора и анализа данных, а также разработки систем искусственного интеллекта и машинного обучения  более десяти лет.

One Reply to “Парсер товаров и цен для интернет-магазина Cartier”

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.