Собираем данные о товарах и ценах торговой марки Diesel на облачной парсинг платформе Diggernaut. Diesel — итальянская компания, занимающаяся производством и продажей одежды, расположена в Бреганце, Италия. Основатель Diesel Рензо Россо начинал свою карьеру с пошива джинс на швейной машинке в возрасте 15 лет. Эти джинсы он носил сам и продавал друзьям по цене 3500 лир за штуку. В последствии он закончил текстильный колледж в Падуа. Сейчас компания продает джинсы и другую одежды, обувь и аксессуары. Линия одежды включает два бренда: Diesel и Diesel Black Gold. Также компания имеет детскую линию одежды Diesel Kid.
Примерное количество товаров: 2000
Примерное количество запросов: 4500
Рекомендуемый план подписки: Free
ВНИМАНИЕ! Количество запросов может превышать количество товаров, потому что данные о вариациях, изображениях и др. могут парсится используя запросы к дополнительным ресурсам. Также часть данных о товаре может доставляться с помощью XHR запросов, что также увеличивает общее количество необходимых запросов.
Как пользоваться парсером информации о товарах и ценах магазина diesel.com
Для использования парсера информации с сайта магазина торговой марки Diesel вы должны иметь учетную запись в нашем сервисе Diggernaut.
- Пройдите по этой ссылке для регистрации в сервисе Diggernaut
- После регистрации и подтверждения email адреса войдите в свою учетную запись
- Создайте проект с любый именем и описанием, если вы не знаете как, обратитесь к нашей документации
- Войдите во вновь созданный проект и создайте в нем диггер с любым именем, если вы не знаете как, обратитесь к нашей документации
- Скопируйте в буфер обмена приведенный ниже сценарий диггера и вставьте его в созданный вами диггер, если вы не знаете как, обратитесь к нашей документации
- Переключите режим работы диггера с Debug на Active, если вы не знаете как, обратитесь к нашей документации
- Запустите ваш диггер и дождитесь окончания его работы, если вы не знаете как, обратитесь к нашей документации
- Скачайте собранный набор данных в нужном вам формате, если вы не знаете как, обратитесь к нашей документации
В дальнейшем вы можете установить расписание для запуска вашего парсера и забирать информацию регулярно.
Сценарий парсера
---
config:
debug: 2
agent: Firefox
do:
- walk:
to: http://shop.diesel.com/
do:
- find:
path: ul.level-1>li,ul.level-2>li,ul.level-3>li,ul.level-4>li
do:
- find:
path: a:not(.actual-stories-link)
slice: 0
do:
- parse:
attr: href
- 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:
- find:
path: 'input#TotalProductCountOnLoad'
do:
- parse:
attr: value
- space_dedupe
- trim
- if:
match: ^\d+$
do:
- variable_set: records
- static_get: url
- variable_set: url
- eval:
routine: js
body: (function () {var pages = []; var i = 0; for (i=0; i <= <%records%>; i+=55) {pages.push(i)}; pages.push(i+55); return pages.join(",");})();
- to_block
- split:
context: text
delimiter: ","
- find:
path: .splitted
do:
- parse
- variable_set: start
- register_set: <%url%>&?sz=55&start=<%start%>&format=page-element
- walk:
to: value
do:
- find:
path: a.name-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#pdpMain'
do:
- variable_clear: desc
- variable_clear: pid
- variable_clear: cid
- variable_clear: key
- 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: h2.product-name
do:
- parse
- space_dedupe
- trim
- object_field_set:
object: product
field: name
- register_set: Diesel
- object_field_set:
object: product
field: brand
- find:
path: div.product-content-header>h6
do:
- parse:
filter: ^ID\:(.+)
- space_dedupe
- trim
- if:
match: \w+
do:
- variable_set: pid
- object_field_set:
object: product
field: sku
- find:
in: doc
path: meta[name="description"]
do:
- parse:
attr: content
- space_dedupe
- trim
- variable_set: desc
- find:
path: ul.discription-list-inner
slice: 0
do:
- find:
path: li.bullet-list-none
do:
- parse
- space_dedupe
- trim
- variable_set: desc
- variable_get: desc
- object_field_set:
object: product
field: description
- find:
path: ul.Color>li>a
do:
- parse:
attr: title
- space_dedupe
- trim
- if:
match: \w+
do:
- object_field_set:
object: product
joinby: "|"
field: variations
- parse:
attr: href
- space_dedupe
- trim
- if:
match: \w+
do:
- walk:
to: value
do:
- find:
path: ul.product-slides-list1>li>a
do:
- parse:
attr: data-href
- space_dedupe
- trim
- if:
match: \w+
do:
- object_field_set:
object: product
joinby: "|"
field: images
- find:
path: div.product-content-header>div.product-price>span.price-sales:contains('$'),div.product-content-header>div.product-price>span.price-final-value:contains('$')
do:
- parse:
filter:
- \$([0-9\.\,]+)\s*-
- \$([0-9\.\,]+)
- normalize:
routine: replace_substring
args:
\,: ''
- space_dedupe
- trim
- object_field_set:
object: product
type: float
field: price
- parse
- normalize:
routine: replace_matched
args:
\$: USD
- object_field_set:
object: product
field: currency
- find:
path: ol.breadcrumb>li>h4>a
slice: 1:-1
do:
- parse
- space_dedupe
- trim
- if:
match: \w+
do:
- object_field_set:
object: product
joinby: "|"
field: categories
- find:
path: div.product-content-header>h5
do:
- parse
- space_dedupe
- trim
- if:
match: \w+
do:
- object_field_set:
object: product
joinby: "|"
field: categories
- find:
path: ul.product-slides-list1>li>a
do:
- parse:
attr: data-href
- space_dedupe
- trim
- if:
match: \w+
do:
- object_field_set:
object: product
unique: yes
field: images
- object_save:
name: product
Пример данных, собранных парсером с сайта
Ниже приведен пример датасета с несколькими товарами в формате JSON (для наглядности). Датасет может быть скачан и как CSV, XLSX, XML, и любой другой текстовый формат используя темплейтный подход.
[{
"product": {
"brand": "Diesel",
"categories": "SALE|MEN|Denim|STRAIGHT|Straight",
"currency": "USD",
"date": "2018-02-11T12:07:58.436Z",
"description": "Straight; Regular waist; Light blue; Destroyed; Non-Stretch",
"images": "http://demandware.edgesuite.net/sits_pod26/dw/image/v2/AAPK_PRD/on/demandware.static/-/Sites-diesel-master-catalog/default/dwad4015e3/images/large/00SD5V_084PK_01_C.jpg?sw=2000",
"name": "DAGH 084PK",
"price": 228,
"sku": "00SD5V084PK",
"url": "http://shop.diesel.com/straight/dagh-084pk/00SD5V084PK.html",
"variations": "Light Blue"
}
}
,{
"product": {
"brand": "Diesel",
"categories": "SALE|MEN|Denim|TAPERED|Tapered",
"currency": "USD",
"date": "2018-02-11T12:08:02.206Z",
"description": "Tapered; Regular waist; Dark blue; Treated; Stretch",
"images": "http://demandware.edgesuite.net/sits_pod26/dw/image/v2/AAPK_PRD/on/demandware.static/-/Sites-diesel-master-catalog/default/dwc5639d0c/images/large/00SS6R_084SW_01_C.jpg?sw=2000",
"name": "JIFER 084SW",
"price": 298,
"sku": "00SS6R084SW",
"url": "http://shop.diesel.com/tapered/jifer-084sw/00SS6R084SW.html",
"variations": "Dark Blue"
}
}
,{
"product": {
"brand": "Diesel",
"categories": "SALE|MEN|Denim|STRAIGHT|Straight",
"currency": "USD",
"date": "2018-02-11T12:08:05.621Z",
"description": "Straight; Regular waist; Light blue; Clean; Non-Stretch",
"images": "http://demandware.edgesuite.net/sits_pod26/dw/image/v2/AAPK_PRD/on/demandware.static/-/Sites-diesel-master-catalog/default/dw4e759043/images/large/00SD5V_084SX_01_C.jpg?sw=2000",
"name": "DAGH 084SX",
"price": 228,
"sku": "00SD5V084SX",
"url": "http://shop.diesel.com/straight/dagh-084sx/00SD5V084SX.html",
"variations": "Light Blue"
}
}]