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

Бесплатный парсер магазина Asos

Бесплатный парсер магазина Asos

Asos – известный английский онлайн магазин модной одежды и обуви, рассчитанный в первую очередь на молодежь. В магазине представлено более 850 брендов. Этот бесплатный парсер поможет вам собрать все товары с сайта asos.com.

Исправлено 04.07.2018 в связи с изменениями на сайте asos

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

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

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

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

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

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

---
config:
    debug: 2
    agent: Firefox
do:
- link_add:
    url:
    - http://us.asos.com/women/a-to-z-of-brands/cat/?cid=1340
    - http://us.asos.com/men/a-to-z-of-brands/cat/?cid=1361
- walk:
    to: links
    do:
    - pool_clear: main
    - find:
        path: ol[data-auto-id="brand-link"]>li>a
        do:
        - parse:
            attr: href
        - link_add:
            pool: main
    - cookie_reset
    - proxy_switch
    - walk: 
        to: links
        pool: main
        do:
        - find:
            path: body
            do:
            - parse
            - if:
                match: Access Denied
                do:
                - accessdenied
        - find:
            path: a[data-auto-id="loadMoreProducts"]
            do:
            - parse:
                attr: href
            - normalize:
                routine: url
            - link_add:
                pool: main
        - find:
            path: article[data-auto-id="productTile"]>a
            do:
            - parse:
                attr: href
            - link_add:
                pool: sub
        - cookie_reset
        - proxy_switch
- walk:
    to: links
    pool: sub
    do:
    - variable_clear: isP
    - variable_clear: allli
    - variable_clear: sdescr
    - variable_clear: li
    - variable_clear: json
    - variable_clear: id
    - find:
        path: script:matches(Pages/FullProduct)
        do:
        - variable_set:
            field: isP
            value: 1
        - parse:
            filter:
                - view\(\'\s*(.+)\',
        - normalize:
            routine: replace_substring
            args:
                \\\': ''
        - normalize:
            routine: unescape_html
        - variable_set: json
    - find:
        path: html
        do:
        - variable_get: isP
        - if:
            match: (1)
            do:
            - object_new: product
            - find: 
                path: head 
                do: 
                - 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: '#breadcrumb li'
                slice: 1:-2
                do:
                - parse
                - space_dedupe
                - trim
                - normalize:
                    routine: replace_matched
                    args:
                        A\s*To\s*Z\s*Of\s*Brands: ''
                - if:
                    match: (\S)
                    do:
                    - object_field_set:
                        object: product
                        field: category
                        joinby: "|"
            - find:
                path: .product-code > span
                do:
                - parse
                - space_dedupe
                - trim
                - if:
                    match: (\S)
                    do:
                    - object_field_set:
                        object: product
                        field: sku
            - find:
                path: meta[name="description"]
                do:
                - parse:
                    attr: content
                - space_dedupe
                - trim
                - if:
                    match: (\S)
                    do:
                    - object_field_set:
                        object: product
                        field: description
            - find:
                path: body
                do:
                - variable_get: json
                - normalize:
                    routine: replace_substring
                    args:
                        '\\\\': '\'
                - normalize:
                    routine: json2xml
                - to_block
                - find:
                    path: brandname
                    do:
                    - parse
                    - space_dedupe
                    - trim
                    - if:
                        match: (\S)
                        do:
                        - object_field_set:
                            object: product
                            field: brand
                - find:
                    path: body_safe > name
                    do:
                    - parse
                    - space_dedupe
                    - trim
                    - if:
                        match: (\S)
                        do:
                        - object_field_set:
                            object: product
                            field: name
                - find:
                    path: images
                    do:
                    - find:
                        path: colour
                        do:
                        - parse
                        - space_dedupe
                        - trim
                        - if:
                            match: (\S)
                            do:
                            - object_field_set:
                                object: product
                                field: variations
                                joinby: "|"
                    - find:
                        path: url
                        do:
                        - parse
                        - space_dedupe
                        - trim
                        - if:
                            match: (\S)
                            do:
                            - normalize:
                                routine: replace_substring
                                args:
                                    \s*$: ?scl=1
                            - object_field_set:
                                object: product
                                field: images
                                joinby: "|"
                - find:
                    path: price > current
                    do:
                    - parse:
                        filter:
                            - (\d+\.?\d*)
                    - if:
                        match: (\d)
                        do:
                        - object_field_set:
                            object: product
                            field: price
                            type: float
                        - register_set: USD
                        - object_field_set:
                            object: product
                            field: currency
            - object_save:
                name: product
    - cookie_reset
    - proxy_switch

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

[{
    "product": {
        "brand": "A-Gold-E",
        "category": "Women|A Gold E",
        "currency": "USD",
        "date": "2017-12-06T19:57:37.564Z",
        "description": "Shop A-GOLD-E Cigarette Low Waist Straight Leg Jean at ASOS. Discover fashion online.",
        "images": "http://images.asos-media.com/products/a-gold-e-cigarette-low-waist-straight-leg-jean/8450280-1-blue?scl=1|http://images.asos-media.com/products/a-gold-e-cigarette-low-waist-straight-leg-jean/8450280-2?scl=1|http://images.asos-media.com/products/a-gold-e-cigarette-low-waist-straight-leg-jean/8450280-3?scl=1|http://images.asos-media.com/products/a-gold-e-cigarette-low-waist-straight-leg-jean/8450280-4?scl=1",
        "name": "A-GOLD-E Cigarette Low Waist Straight Leg Jean",
        "price": 348,
        "sku": "1122820",
        "url": "http://us.asos.com/a-gold-e/a-gold-e-cigarette-low-waist-straight-leg-jean/prd/8450280?clr=blue&cid=20852",
        "variations": "Blue"
    }
}
,{
    "product": {
        "brand": "A-Gold-E",
        "category": "Women|A Gold E",
        "currency": "USD",
        "date": "2017-12-06T19:57:38.752Z",
        "description": "Shop A-GOLD-E 90s Mid Rise Loose Fit Jean at ASOS. Discover fashion online.",
        "images": "http://images.asos-media.com/products/a-gold-e-90s-mid-rise-loose-fit-jean/8450283-1-blue?scl=1|http://images.asos-media.com/products/a-gold-e-90s-mid-rise-loose-fit-jean/8450283-2?scl=1|http://images.asos-media.com/products/a-gold-e-90s-mid-rise-loose-fit-jean/8450283-3?scl=1|http://images.asos-media.com/products/a-gold-e-90s-mid-rise-loose-fit-jean/8450283-4?scl=1",
        "name": "A-GOLD-E 90s Mid Rise Loose Fit Jean",
        "price": 348,
        "sku": "1122848",
        "url": "http://us.asos.com/a-gold-e/a-gold-e-90s-mid-rise-loose-fit-jean/prd/8450283?clr=blue&cid=20852",
        "variations": "Blue"
    }
}
,{
    "product": {
        "brand": "A-Gold-E",
        "category": "Women|A Gold E",
        "currency": "USD",
        "date": "2017-12-06T19:57:39.241Z",
        "description": "Shop A-GOLD-E Jamie High Rise Mom Jean at ASOS. Discover fashion online.",
        "images": "http://images.asos-media.com/products/a-gold-e-jamie-high-rise-mom-jean/8450298-1-blue?scl=1|http://images.asos-media.com/products/a-gold-e-jamie-high-rise-mom-jean/8450298-2?scl=1|http://images.asos-media.com/products/a-gold-e-jamie-high-rise-mom-jean/8450298-3?scl=1|http://images.asos-media.com/products/a-gold-e-jamie-high-rise-mom-jean/8450298-4?scl=1",
        "name": "A-GOLD-E Jamie High Rise Mom Jean",
        "price": 348,
        "sku": "1122850",
        "url": "http://us.asos.com/a-gold-e/a-gold-e-jamie-high-rise-mom-jean/prd/8450298?clr=blue&cid=20852",
        "variations": "Blue"
    }
}
,{
    "product": {
        "brand": "A-Gold-E",
        "category": "Women|A Gold E",
        "currency": "USD",
        "date": "2017-12-06T19:57:39.689Z",
        "description": "Shop A-GOLD-E Sophie High Rise Crop Skinny Jean at ASOS. Discover fashion online.",
        "images": "http://images.asos-media.com/products/a-gold-e-sophie-high-rise-crop-skinny-jean/8450276-1-blue?scl=1|http://images.asos-media.com/products/a-gold-e-sophie-high-rise-crop-skinny-jean/8450276-2?scl=1|http://images.asos-media.com/products/a-gold-e-sophie-high-rise-crop-skinny-jean/8450276-3?scl=1|http://images.asos-media.com/products/a-gold-e-sophie-high-rise-crop-skinny-jean/8450276-4?scl=1",
        "name": "A-GOLD-E Sophie High Rise Crop Skinny Jean",
        "price": 215,
        "sku": "1122810",
        "url": "http://us.asos.com/a-gold-e/a-gold-e-sophie-high-rise-crop-skinny-jean/prd/8450276?clr=blue&cid=20852",
        "variations": "Blue"
    }
}]
Михаил Сисин Со-основатель облачного сервиса по сбору информации и парсингу сайтов Diggernaut. Работает в области сбора и анализа данных, а также разработки систем искусственного интеллекта и машинного обучения  более десяти лет.