Пример настройки парсера V4.IDE. Документация (DOCX)

advertisement
Пример настройки
парсераV4.IDE
Универсальный парсер контента с
поддержкой интернет-магазинов
Оглавление
Шаг 1 Введение или что мы будем парсить ...............................................................................2
Шаг 2 Делаем базовую настройку, определяемся с кодировками ............................................2
Шаг 3 Знакомимся с алгоритмом работы парсера .....................................................................3
Шаг 4 Редактируем категории вручную ......................................................................................4
Шаг 5 Стандартные поля V4.IDE .................................................................................................6
Шаг 6 Самая важная глава. Извлекаем поля ...............................................................................8
Базовые понятия ........................................................................................................................8
Как Xpath настраивается в V4.IDE ..........................................................................................9
Как “Регулярные выражения” настраиваются в V4.IDE .....................................................12
Дополнительная обработка значений полей .........................................................................12
Фильтрация карточек товара ..................................................................................................13
Тестирование правильности извлечения полей ....................................................................13
Шаг 7 Извлекаем картинки (изображения) ...............................................................................14
Шаг 8 Делаем автоматическое извлечение категорий .............................................................15
Шаг 9 Определяем ссылку из категории на карточку товара .................................................21
Шаг 10 Пагинация категорий / товаров .....................................................................................24
Режим «Следующая ссылка». .................................................................................................24
Режим “Шаблон”. ....................................................................................................................25
Шаг 11 Пишем свой скрипт ........................................................................................................26
Общее........................................................................................................................................26
Методы и парамеры.................................................................................................................27
Метод RunProduct (Самый распространенный) ...................................................................29
Шаг 12 Извлечение характеристик ............................................................................................30
Шаг 13 Файлы выгрузки, формируем CSV шаблон .................................................................35
Шаг 1 Введение или что мы будем парсить
Что парсить – это очень хороший вопрос. Особенно в статье, которая станет ключевой в
обучении людей, которые хотят научиться настраивать V4.IDE. Конечно хочется показать
пример на каком-нинибудь популярном интернет-магазине, но есть много «но».
Например, этот сайт может поменять верстку и нас об этом не предупредить. Поэтому
самым правильным вариантом для примера я считаю должен быть сайт
http://catalogloader.com/shop/ru/ т.е. наш интернет-магазин. Мы уж точно будем знать,
когда поменяем верстку у себя на сайте ☺ Что он из себя представляет
http://catalogloader.com/shop/ru/ ? Это обычный интернет-магазин: есть категории, есть
товары, а у товаров есть характеристики и комбинации. И самое главное то, что мы все
это можем спарсить в V4.IDE.
Шаг 2 Делаем базовую настройку, определяемся с
кодировками
Заполняем поля на вкладке «Источник» «Домен сайта источника» и «Начало каталога
источника» как показано на рисунке:
С кодировкой нужно определиться. Вообще в моей практике были в 99% случаев два
варианта. Первый это windows-1251, а второй UTF-8. Для того чтобы не гадать нужно
зайти на сайт и посмотреть код страницы в браузере. В Хроме это делается так: правой
кнопкой мыши по пустому месту на странице сайта и в контенстном меню выбираете
пункт «Просмотр кода страницы». Это показано на следующей картинке:
Потом необходимо найти слово charset в просмоторщике html и выяснить его значение.
Его и нуно записывать в поле «Кодировка страницы сайта источника».
Шаг 3 Знакомимся с алгоритмом работы парсера
В парсер V4 заложен следующий алгоритм:
1) Парсер вычитывает настройки (файл grabSettings) и каталог сайта источника (файл
grabCatalog). Т.е. grabCatalog должен быть уже готов перед запуском и он
автоматически не перестраивается во время «реального извлечения данных».
2) По каждой категории , если указан флажок «только по нижним», то только по
нижним категориям ищет ссылки на товары.
3) Для каждого товара извлекает поля, а если включен скрипт, по после извлечения
полей на товаре запускается скрипт обработка.
4) Каждый товар сохраняется в базу данных (.clp файл) с учетом того в какой
категории он был спаршен.
Очень важно знать и понимать этот алгоритм
для настройки парсера V4.IDE
В каждой из последующих глав описывается детальные инструкции по каждому из
пунктов алгоритма на примере реальной настройки на сайт catalogloader.com/shop/ru.
Шаг 4 Редактируем категории вручную
Редактирование категорий – это очень важный момент в настройке парсера. Надо
сказать, что активная поддержка категорий и все, что связано с ними в V4 парсер
являются одной из технологических новшеств и конкурентным преимуществом.
Я обычно пользюсь ручным редактированием в нескольких случаях.
1. Когда настраиваю парсер.
2. Когда надо быстро что-то спарсить небольшое.
3. Когда построить автоматически каталог нельзя и проще сделать это руками.
Сделаем редактирование категорий вручную. Вот так выглядит главная страница
магазина:
Категории первого уровня – это «Парсеры товаров V4» и «Парсеры цен».
Дочерними категориями для «Парсеры товаров V4», т.е. категориями второго
уровня – это категории «Парсер V4.IDE», «Модули импорта», «Перевод
контента», «Запуск по расписанию» и «Конвертеры».
Чтобы «вручную» описать эту иерарфию надо открыть редактор категорий. Для
этого перейдите в таб «Категории» и кликните на «Редактирование категорий»
откроется текстовый редактор который надо будет отредактировать.
В V4 исползуется специальный формат для описания категорий. Он называется
grabCatalog. Вот так выглядит пример как можно наполнить этот файл:
#Парсеры товаров V4
##Модули импорта[path] http://catalogloader.com/shop/ru/49-import-modules
##Перевод контента[path] http://catalogloader.com/shop/ru/56-perevod-kontenta
##Запуск по расписанию[path]http://catalogloader.com/shop/ru/57-Scheduled
##Конвертеры[path]http://catalogloader.com/shop/ru/46-konvertery
#Парсеры цен
##Россия[path]http://catalogloader.com/shop/ru/71-russia
Символ # отвечает за иерархию, а количество повторений этого символа отвечают за
уровень вложенности. Хотябы одна категория должна быть определена в этом файле.
С пустым файлом категорий парсер нельзя будет запустить.
Замететьте, что для категории первого уровня «Парсеры товаров V4» я не задал
ссылку. Это я сделал специально, потому что из родительской категории товары мне
не нужно извлекать, а нужно извлекать только из «детей» т.е. категорий нижних
уровней. За такое поведение парсера отвечает парамер в настройках «Скачивать
товары только из нижних категори». Обычно это актуально в 99% проектах.
Почему это важно правильно заполнять этот файл? Потому что когда вы
настроите парсер до конца и начнете парсить и эксопртировать данные , то V4
будет во-первых показывать эти категории в диалогах и использовать названия
категори и их иерархив в экспортируемых файлах или модулях импорта.
Шаг 5 Стандартные поля V4.IDE
Когда разрабатывался парсер V4.IDE хотелось сделать, что-то, что будет очнь
универсальным с точки зрения формирования результатов. А так как парсер создавался с
рассчетом на поддержку интернет-магазинов, то мы сознательно ввели в требование
называть, например, поле отвечающее за имя товара SYS_PRODUCT_NAME.
Вот так эти поля выглядят в программе. При нажатии на «+» можно добаввлять новые, а
на «-»можно удалять выделенное поле.
Вот такая табличка описывает названию полей в V4 и их значения.
Название в V4
Назначение
SYS_PRODUCT_SKU
SYS_PRODUCT_ART
Эти два поля отвечают за артикул, они
идентичны, но заполнять их нужно два и
одинаковыми значениями. Почему так?
Просто примите это как истину. По
историческим причинам.
SYS_PRODUCT_NAME
Имя
SYS_PRODUCT_PRICE
Цена
SYS_PRODUCT_QUANTITY
Количество
SYS_PRODUCT_IMAGE
Название файла картинку. Нужно при
сохранении картинок на компьютер.
SYS_PRODUCT_IMAGE_FULL
Полная ссылка (URL) на картинку.
SYS_PRODUCT_DESC
Полное описание
SYS_PRODUCT_DESC_SMALL
Краткое описание
SYS_PRODUCT_MANUFACTURER
Производитель
SYS_META_TITLE
SEO META_TITLE
SYS_META_KEYWORDS
SEO META_KEYWORDS
SYS_META_DESCR
SEO META_DESCR
SYS_PRODUCT_CURRENCY
Валюта
SYS_PRODUCT_URLREWRITE
ЧПУ (дружественная ссылка)
Если надо несколько картинок, то
используйте постфикс с цифрой 2, 3, 4 и т.д.
Важно! Чтобы извлечь одну картинку надо
обязательно определить два параметра:
SYS_PRODUCT_IMAGE
1) имя картинки,
2
2) сслыку на картинку.
2
SYS_PRODUCT_IMAGE_FULL
Если этого не сделать, то парсер не будет
обрабатывать извлечение картинок.
Шаг 6 Самая важная глава. Извлекаем поля
Эта главая она самая важная в этой статье. Важная по нескольким причинам. В первую
очередь здесь будет показано как извлекать базовые данные. Именно эти данные нужны в
90% случаях. Во вторую очередь здесь показывается механика того как эти данные
извлекаются. Сама механика извлечения несколько связана с программированием, но
очень отдаленно.
Базовые понятия
HTML
Веб-странички сайтов закодированы в формате HTML. HTML – это язык разметки,
наследник XML. Википедия дает такое определение. HTML (от англ. HyperText Markup
Language — «язык гипертекстовой разметки») — стандартный язык разметки документов
во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке
HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде
документа в удобной для человека форме.
Что нам важно знать для парсинга?
1) HTML похож на XML. Содержимое странички (посмотреть на HTML) можно
посмотреть в браузере.
2) HTML имеет Тэги, такие как «a» - ссылка или div – блок, table – таблица и т.д.. И
данные, которые нам нужны находятся или как содержимое некоторых тегов или
как атрибуты некоторых тегов.
3) Эти теги находятся в иерархии друг относительно друга. Это очень важно знать для
понимания XPATH. О нем расскажу позже.
XPATH
Xpath – это язык навигации по тегам в XML. А так как HTML это почти что XML, то
Xpath используют как один из механизмом для извлечения данных из HTML. Он не
единственный, но самый простой и быстрый для получения первых результатов. 90%
данных в парсерах описывается с помощью Xpath. Следует знать, что не всегда можно
воспользоваться xpath/ Причин может быть много почему так происходит. Но Следует
сказать, что если не работает этот метод, всегда есть еще другие.
Как Xpath настраивается в V4.IDE
Собственно для того чтобы описать Xpath надо выбрать соответсвующий «метод» в
комбобоксе. За текстовое значение, которое извлекается из HTML, отвечают xpath
выражение, которое мы впишем в соответствующее текстовое поле и если надо название
атрибута. Атрибут для Xpath – опциональная настройка.
Я на примере поля «имя товара» настрою извлечение значения этого параметра.
Как это делается? Очень просто. Пошаговая инструкци такая:
1) Открываем браузер (я использую Хром) на странице карточки товара. Для нас это
http://catalogloader.com/shop/ru/catalogloaderfull/153--catalogloader-full-version.html
Имя выделено красным:
2) Наводим мышку на имя и правым кликом открываем «контекстное меню», а в нем
кликаем на «Просмотр кода элемента:
Как только мы так сделаем покажется «консоль» (не пугайтесь названия) с нашим
выделенным элементом. Как это выглядит показано ниже:
Собственно, что это действие дало нам понять? В первую очередь, то, что имя товара
находится в теге H1. А H1 находится в теге div, а этот div находится внутри другого div.
Вообщем, как вы видите какая-то иерархия прослеживается. И Xpath позволяет описать
элемент (он же тэг) внутри html, а парсер заберет в поле значение , которое мы опишем в
программе. Я это сделал вот так:
Просто вписал //h1 и этого абсолютно достаточно. Вообще пользоваться xpath это целая
наука. Я расскажу базовые моменты о том как использоваться xpath.
1) Что означает // в начале выражения? Означает что у тега, который стоит после //
может быть какое угодно число «Родителей»
2) / - просто черта, которая определяет, что «родитель» и это тот, что слева от черты
3) //div/h1 – означает, что мы ищем h1, у которого родитель div, а вот у дива
родителем можем быть кто угодно
4) Если нам надо выбрать не просто любой div, а div у которого аттрибут class равен
info, то это делается вот так: //div[@class=”info”]
Например, у нас на сайте краткое описание сверстано вот так:
Т.е. есть div у которого id= short_description_content И мое xpath получилост вот таким:
//div[@id="short_description_content"]
Как это выглядит в программе:
Как “Регулярные выражения” настраиваются в V4.IDE
Регулярные выражения – это очень мощный инструмент для извлечения данных из текста.
Проблема заключается в том, что одновременно он и достаточно сложный инструмент. Я
прибегаю к его использованию, когда xpath не помогает, а поле надо извлечь и
программировать специальный скрипт для этого тоже не хочется.
Что надо сделать, чтобы начать их использовать? Первое – это выбрать метод извлечения
«RegEx(регулярное выражение)». Это показано на следующей картинке:
В теории можно описать само регулярное выражени, название группы, которыю мы хотим
использовать или номер (позицию) подходящего текста, подошедшего по нашему
выражению. Вообщем все эти вещи можно задать через программу в соответствующих
местах.
Дополнительная обработка значений полей
Порой мы можем извлечь поле, но его надо дополнительно обработать, где-то лишний
текст надо удалить, где-то что-то надо заменить на другой текст и т.д. Типичные случаи
были вынесены в настройки для дополнительной обработки. На следующей картинке все,
что выделено красным отвечает за дополнительную пост-обработку текстовых данных.
Напомню, что оригинальные данные мы получает по xpath или регулярным выражениям.
Фильтрация карточек товара
Тестирование правильности извлечения полей
Когда делаете настройки нового парсера хочется бысро понять, а правильно ли написал
xpath или регулярное выражение. И тут на помощь нам в V4.IDE приходит встроенное
тестирование. Чтобы начать тестировани для карточки товара необходимо сделать
следующее:
1) Скопировать в буфер обмена ссылку на карточку товара. В нашем случае это
http://catalogloader.com/shop/ru/catalogloaderfull/153--catalogloader-full-version.html
И вставить в поле которое отвечает за карточки товаров и нажать на кнопку «+».
Как у меня получилось смотрите на следующей картинке:
Соответственно если ссылку надо удалить, то нажимайте на «-», он же «минус». В вот
зеленая кнопка «Проверить» откроет диалог со значениями, которые извлек парсер с
текущими настройками. У меня это выглядит так:
В интерфейсе тестирования есть кнопки «О» и «Н» эти кнопки от слов «Открыть» и
«Html». «Открыть» - открывает ссылку в вашем браузере. «Html» - открывает ссылку в
браузере так как ее видит парсер V4. Вы удивитесь, но видит он ее совершенно иначе.
Попробуйте сами на это посмотреть.
Шаг 7 Извлекаем картинки (изображения)
Изображения одна из основопологающих частей парсинга. И поэтому я выделяем целую
главу для вопроса извлечения картинок.
За это отвечают следующие атрибуты:
SYS_PRODUCT_IMAGE
Название файла картинки. Нужно при
сохранении картинок на компьютер или
хостинг сайта.
SYS_PRODUCT_IMAGE_FULL
Полная ссылка (URL) на картинку.
Важно! Чтобы извлечь одну картинку надо обязательно определить два параметра:
1) имя картинки (SYS_PRODUCT_IMAGE),
2) сслыку на картинку (SYS_PRODUCT_IMAGE_FULL).
Если этого не сделать, то парсер не будет обрабатывать извлечение картинок.
Если надо спарсить несколько картинок, то используйте постфикс с цифрой 2, 3, 4 и т.д.
SYS_PRODUCT_IMAGE
2
2
SYS_PRODUCT_IMAGE_FULL
Как настраивать извлечение полей смотрите смотрите в Главе “Шаг 5 Стандартные поля
V4.IDE”.
Шаг 8 Делаем автоматическое извлечение категорий
Я уже говорил, что категории - это одна из ключевых особенностей V4. И ручное их
редактирование это не единственное на что способен этот парсер. Я очень люблю в
парсере V4.IDE функцию построения категорий. Очень сильно люблю. Она всегда меня
впечатляет, когда я получаю нужный мне результат. Хоть я и понимаю как она работает и
я сам придумал этот алгоритм и запрограммировал его и все равно каждый раз для меня
это как открытие получить результат этой функции, как подарок от деда мороза на Говый
год в детстве. Собственно это была лирика. Переходим к практике. Управление
настройками осуществляется на вкладке «Категории». Это показано на следующей
картинке:
В этой функциональности есть рована два режима работы. Условно они называются
«старый» и «новый». Старный исторически появился первым, а новый, соответственно
был после него. «Новый» режим немного универсальнее и гибче. Позже я объясню чем.
Начнем настройку, как это делаю я?
1) Захожу на сайт-источник. У нас это http://catalogloader.com/shop/ru/
Вот так у меня выглядит сайт. Красным я выделил категории первого уровня:
Собственно, сейчас я опишу через xpath ссылку на эти категории. Захожу в хром на
главную страницу. Навожу мышку на категорию первого уровня. Кликаю правой кнопкой
мыши. Выбираю из меню «Просмотр кода элемента». Как это получилось у меня смотрите
на следующей картинке:
Теперь я составляю xpath выражение для описания ссылки на категорию первого уровня .
Вот такое оно у меня получилось: //ul[@class="toggle_content tree store_list"]/li/a
Тут внимательный читатель наверно бы удивился, почему я нигде не указываю, что данные
надо взять из атрибута href. Объясню. В «Старом» режиме ссылка формируется
автоматически из атрибута href тега, который мы определили в xpath (а я определил тег a), а
название категории из текста «внутри» тэга, нужно просто передать тег. В этом и
преимущество «старого режима» и его недостаток. Преимущество в том, что настраивается
быстро и просто. Недостаток в том, что не всегда ссылка есть в атрибуте href и не всегда имя
категории находится «Внутри» тега. Эти недостатки устранены в «Новом режиме». О нем я
расскажу позже.
Переходим к знакомству с «Новым» режимом извлечения категорий. Для включения
«Нового» режима я нажал на галочку «Режим старый / новый». И у меня появился
интерфейс как на картинке:
Как не сложно заметить, появился интерфейс с которым мы работали, когда извлекали
поля то товара.
Для того чтобы описать категорию «первого уровня», надо описать два поля:
Название поля
Для чего нужно
SYS_CATALOG_NAME1
Определяет имена категорий «первого
уровня»
SYS_CATALOG_HREF1
Определяет ссылки на категории «первого
уровня»
Для того чтобы определять категории 2, 3, 4 и т.д. уровней, неоходимо добавлять
сответствующую цифру в конец поля, например,
SYS_CATALOG_NAME2 и SYS_CATALOG_HREF2 и описывать через xpath или регулярные
выражения.
Как я настроил SYS_CATALOG_ NAME1показано на предыдущей картинке, а вот как я
настроил SYS_CATALOG_HREF1 показано на следующей картинке:
Чем они отличаются? Тем, что я явно настроил, что извлекаемое значение будет браться
из атрибута href для поля SYS_CATALOG_HREF1.
Переходим к тестированию. Нидже показан интерфейс для тестирования категорий
первого уровня:
Что конкретно я сделал? Это добавил ссылку на главную страницу ( вставил ссылку,
указал уровень категории и нажал на «+»). После этого нажал на кнопку «Проверить» и у
меня появился диалог с результатами (категориями первого уровня):
Вижу, что с первым уровнем все получилось. Начинаю настраивать второй уровень.
Я вот ввел вот такой xpath //ul[@class="toggle_content tree store_list"]/li/lu/a
Добавил ссылку для тестирования, нажал на кнопку «Проверить» и получил ошибку.
Текст ошибки на английском языке. Обещаю, что скоро мы это исправим ☺ и будет на
русском. Но смысл там такой, что ссылки не нашлись.
Да, я сделал ошибку в xpath, опечатка была, теперь я сделл правильно. Надо вот так:
//ul[@class="toggle_content tree store_list"]/li/ul/li/a
Вот так это у меня выглядит в программе. На следующие картинке показаны результаты
теста:
Кстати теперь можно нажать на кнопку «Запустить генерацию категорий» и по нашим
правилам сформируются категории в grabCatalog файл.
Кстати, здесь (автоматической генерации) очень важно, что вы вписали на вкладке
«Источник» в поле «Начало каталога источнике». Напомню как у меня это выглядит.
У меня вставлено значение http://catalogloader.com/shop/ru/
У меня процесс генерации завершился. В логе были красные линии – ошибки. Но они не
совсем ошибки, а предупреждения. Вообщем, надо смотреть на результат. У меня
получилось вот так:
Что здесь можно увидеть? Категории есть, иерархия есть. А вот категории второго уровня
из «парсера цен» затесались в «парсеры товаров V4». Я знал, что так будет. Это связано со
спецификой верстки на сайте-источнике. Для того чтобы все поправить в нормальный
вид. Я руками перенесу «затесавшиеся» категории в нужное место. У меня получилось вот
так:
Шаг 9 Определяем ссылку из категории на карточку
товара
Все, что мы делали до сих пор было правильно и абсолютно необходимо для настройки
парсера. Но к сожалению без пункта, который мы рассмотрим в этой главе, программа
ничего не спарсит. Напомню, что мы уже умеем настраивать категории и умеем излекать
информацию из карточки товара. Но программе V4.IDE нужно «сказать», что является
карточкой товара и как перейти из категории в «карточку товара». По сути, надо описать
ссылку из категории на карточку товара.
Для этого мы переходим на таб «Ссылка на карточку из категории» и нам нужн здесь
заполнить одно единственное поле, которе называется SYS_PRODUCT_LINK. Как это
выглядит в программе показано на следующей картинке:
Интерфейс и принципы такие же как и раньше. Мы «описываем» ссылку или через xpath
или через «регулярное выражение». Для того тобы сформировать xpath я открываю
страницу категории http://catalogloader.com/shop/ru/76-parser-v4ide в браузере (Хром) и
нахожу где у меня ссылка на карточку товаров, навожу мышку на эту ссылку и выбираю
«Просмотр кода элемента». Результат показан на следующем рисунке:
То, что я увидел в консоли хрома, позволяет мне сделать xpath. Он у меня получился вот
такой //a[@class="product_link"]
Результат получен правильный.
Шаг 10 Пагинация категорий / товаров
Пагинация – это когда на странице много товаров и чтобы все 10000 товаров не светить на
одной из разбирают на группы по 20-30-50 и соответственно показывают только эту
группку ссылок \ товаров.
На сайте catalogloader такая страница где есть пагинация это
http://catalogloader.com/shop/ru/10-parsery-tovarov-v4
Есть два режима для обработки «Пагинации».
1) «Следующая ссылка».
2) «Шаблон».
Режим «Следующая ссылка».
Самый простой способ – это режим «Следующая ссылка». В этом режиме надо
определить ссылку на следующую страницу. В нашем случае это кнопка\ ссылка «далее».
Она выделена красным цветом на следующей картинке:
У меня вот такое xpath выражение получилось: //li[@id="pagination_next"]/a
В настройках программы это выглядит так:
Режим “Шаблон”.
Как он работает/
Посмотрим на ссылку категории с большим количеством товаров
вот она:
http://catalogloader.com/shop/ru/10-parsery-tovarov-v4
Вторая страница будет
http://catalogloader.com/shop/ru/10-parsery-tovarov-v4?p=2
Как не очень сложно увидеть, то разница между первой страницей и второй будет
появившаяся новая часть:
?p=2
Собственно идея работы с этим методом заключается в том, что надо задать шаблон,
описывающий изменяющуюся часть ссылки категории. В нашем случае, чтобы задать
шаблон надо вписать:
?p={0}
где {0} отвечает за изменяющий индекс.
Для того чтобы задать шаг изменения этого индекса в шаблоне, задайте параметр
“Количество продуктов на странице или ШАГ”
Начальное значение индекса на первой странице категории задается в параметре
“Начальное значение индекса пагинации”
Вот так это выглядит у меня в настройках:
Шаг 11 Пишем свой скрипт
Общее
Настраивать параметры через xpath & regex дело конечно благородное, но не всегда
можно сделать с помощью этих методов именно то, что нужно. В таких случаях самым
правильным путем решения задачи является написание специализированного скрипта.
Для того чтобы активизировать работу скрипта необходимо перейти на вкладку “Скрипт”
и включить его работы. Это показано на следующем рисунке:
Редактировать скрипт можно как в самой программе, так и в профессиональной среде
разработки Visual Studio от Microsoft. Следует сказать, что покупать платную версию
Visual Studio совсем не надо. Достаточно для использования бесплатная версия Visual
Studio Express. Ее можно свободно скачать с сайта Microsoft. Возможно, придется
зарегистрироваться.
Для начала я расскажу о самом важном. Для этого предгалаю нажать на кнопку
“Редактировать скрипт” и увидеть редактор c# кода в V4.IDE. Да забыл сказать о самом
главном. Скрипты пишутся на языке программирования c#.
V4.IDE позволяет использовать несколько функций (методов) из класса CustomScriptBase.
public virtual void GetProductLinksForCategory(GetProductLinksForCategoryScriptParameters
p);
Методы и парамеры
Название метода
Назначение
Когда вызывается
GetProductLinksForCategory
Сформировать список
ссылок на продукты
(карточки товаров)
После формирования ссылок
на карточки товаров через
стандартные методы и
перед обработкой карточек
товаро
GrabCatalogBuild
Построение дерева
категорий
При нажатии кнопок
“перестроить дерево
категорий. Необходимо
использовать когда
традиционные способы не
работают.
Login
Авторизация на сайтеисточнике с логином и
паролем
Перед первым запросом к
источнику
ProcessFinished
Обработка данных после
того как парсинг
завершился, например,
После того как все товары
спарсились
сохранение в файл особого
формата.
RunCategory
Формирование специфичных
параметров для категории
RunProduct
Формирование специфичных После того как атрибуты
параметров для продукта
продукта был извлечены
через xpath & regex.
Входные параметры для каждого метода соответственно следующие:
public class LoginScriptParameters : RunScriptParametersBase
{
public object State = null;
public WebClientWithCookies WebClient = new WebClientWithCookies();
public CookieCollection SessionCookieCollection = new CookieCollection();
public string UserAgent;
}
public class ProcessFinishedScriptParameters : RunScriptParametersBase
{
public string ClpFilePath = "";
}
public class GrabCatalogBuildScriptParameters : RunScriptParametersBase
{
public Category Root = null;
}
public class RunProductScriptParameters : RunScriptParametersBase
{
public Product Product = null;
public Category Category = null;
}
public class RunCategoryScriptParameters : RunScriptParametersBase
{
public Category Category = null;
}
public class GetProductLinksForCategoryScriptParameters : RunScriptParametersBase
{
public Category Category = null;
}
Метод RunProduct (Самый распространенный)
На следующей картинке представлен следующий код :
public override void RunProduct(RunProductScriptParameters runProductScript)
{
runProductScript.Product.SetAttributeValue("SYS_PRODUCT_NAME", "1test");
Сама картинка в V4.IDE:
}
Здесь используется опредленный синтаксис относящийся к программированию на c#,
например такие ключевые слова public & override. Это относится к части ООП (объектно
ориентированного программирования). Для работы с парсером это совсем необязательно
знать. Можно просто делать по аналогии.
Давайте разберем код и размеремся, что здесь за что отвечает и делает:
runProductScript.Product.SetAttributeValue("SYS_PRODUCT_NAME", "1test");
●
●
●
●
runProductScript - параметр переданный как аргумент в метод RunProduct
Product - это объект (проперти) runProductScript.
SetAttributeValue - это метод Product.
у SetAttributeValue два парметра. Первый - название атрибута, второй - значение,
которое будет выставлено атрибуту (первый параметр) после выполнения этого
метода.
Собственно что делает этот код скрипта? Он выставляет значение “1test” полю
SYS_PRODUCT_NAME. Т.е. чтобы вы не ввели в xpath & regex для
SYS_PRODUCT_NAME черех визуальный редактор скрипт поменяет это значение на
1test.
Шаг 12 Извлечение характеристик
Что такое характеристики многие представляют. Это таблица вида “название””значение”. Такая таблица обычно “заверстана” одним из трех способов:
1) через table \ tr\ td.
2) через div.
3) через li \ ul.
Если посмотреть на сайт Catalogloader.com, то у некоторых товаров на этом сайте есть
такая таблица и она “заверстана” через ul\li. Как это выглядит показано на следующем
рисунке:
Стоит признать, что ul \ li - это не лучший способ верстать таблицы, особенно с точки
зрения парсинга. Извлечение характеристик непосредственно связано с
программированием скрипта. Мы, когда думали как это сделать, долго не могли
выбрать оптимальный путь решения этой задачи для пользователей парсера. Хотелось
сделать просто, но при этом универсально. Что у нас получилось смотрите далее:
1) Открываем редактирование скрипта (пример скрипта можно найти в проекте
Catalogloader.com, который есть в программе) и находим функцию RunProduct.
2) Для объекта product в методе RunProduct нужно вызвать метод
AddDynaticAttribute(attrName, attrValue), где attrName - это имя Характеристики, а
attrValue - это текстовое значение Характеристики. Собственно это все. Дальше идет
программирование.
Стандартной практикой в шаблоне c# скрипта добавляем заготовки для этого и
других дел. Вот так это выглядит:
На примере сайта market.yandex.ru рассмотрим, как можно настроить извлечение
характеристик из карточки товара. Что настроить характеристики, нужно найти блок html
содержащий их.
XPath пишем в параметр HTML_PARAMETERS
Далее в скрипте мы должны указать xpath находящий строки с парами имя = значение , xpath
указывающий имя в этой строке и xpath указывающий значение в этой строке
Указываем тестовую ссылку и тестируем, должно получится так.
Шаг 13 Файлы выгрузки, формируем CSV шаблон
Для того чтобы сделать шаблон выгрузки в программе «под себя» надо перейти на
вкладку «Шаблоны» и включить галочку «Включить выгрузку в пользовательские
шаблоны CSV».
Вот так выглядит это у меня:
Что надо заполнить:
1) Разделитель. У меня это точка с запятой «;».
2) Экранатор. У меня это кавычка «”».
3) И настроить сам шаблон.
Настройка шаблона состоит из определения трех линий в нижнем текстовом поле на
вкладке «Шаблоны».
Номер линии в шаблоне
Назначение
Первый
Это название шаюлона. Оно будет использоваться программой
при формировании имени экспортного файла. Если в названии
присутствует слово dynamic, то шаблон будет автоматически
расширен во время экспорта колонками с характеристиками.
Второй
Это первая линия CSV файла. Это так называемый «заголовок»
или «header».
Третий
Это шаблон второй и последующих линий CSV файла. Имя
параметров, которые формируют шаблон следует «обрамлять»
в префикс «[[[« и постфикс «]]]».
В третьей линии можно использовать поля, которые мы определили в карточке товара.
Пример третьей линии шаблона. Все в одну линию.
"[[[VAR_URL]]]";"[[[CAT_FULL]]]";"[[[SYS_PRODUCT_SKU]]]";"[[[SYS_PRODUCT_ART]]]"
;
"[[[SYS_PRODUCT_NAME]]]";"[[[SYS_PRODUCT_PRICE]]]";
"[[[SYS_PRODUCT_QUANTITY]]]";"[[[SYS_PRODUCT_DESC]]]";
"[[[SYS_PRODUCT_DESC_SMALL]]]";"[[[SYS_PRODUCT_MANUFACTURER]]]";
"[[[SYS_META_TITLE]]]";"[[[SYS_META_KEYWORDS]]]";"[[[SYS_META_DESC]]]";
"[[[SYS_IMAGE_NAME_ALL]]]";"[[[SYS_IMAGE_LINK_ALL]]]"
Также имеются и другие служебные поля, такие как:
● VAR_URL – ссылка на товар.
● CAT_FULL – полное название категории.
Остальные поля типа SYS_PRODUCT_SKU идентичны тем, что мы разбирали при
извлечении данных из карточки товара. Здесь также могут быть представлены любые
другие пользовательские поля.
Для того чтобы выгрузить из программы в «Пользовательский шаблон», необходимо во
время выгрузки выбрать пункт «Custom Template» как показано на рисунке:
Download