Quad.Wiki

Парсер информации из карточек товаров

 

Настройки получения информации

Настройки для сохранения информации из карточки товара сайта в товар в программе указываются во вкладке “6. Обработка”

 

Перейти к тегу - указывается тег страницы, к которому переходит парсер, перед тем как собирать информацию. Используется, если нужно пропустить какую-то часть страницы (не обязательно указывать).

Начало блока поиска - указывается, если нужно перед обработкой страницы вырезать какую-то ее часть, чтобы ограничить текст, в котором будет поиск информации (не обязательно указывать).

Конец блока поиска - завершающий тег вырезаемого блока текста.

Наличие - здесь можно указать настройки обработки наличия товара, информация по которому видна на сайте в карточке товара. Наличие указывается в виде списка ИД наличия|текст поиска, каждый новый ID с новой строки.

После знака | нужно добавить код из текста страницы, который однозначно означает, что товар находится в требуемом наличии, указанном с помощью ИД перед знаком |

1|button>Купить
3|button>Заказать

Если указанного варианта текста не найдено на странице, то товар станет Нет в наличии

Можно наоборот, задать только текст для нет в наличии, например

2|class=”NotAvailable”

В этом случае, если найдет такой текст, то товар будет Нет в наличии, если не найден - в наличии.

ИД типа наличия можно посмотреть во вкладке Конфигурация

 

Поля для парсинга

Поля указываются в таблице, которая по умолчанию имеет следующий вид

Поле определяется по коду, примеры кодов можно увидеть здесь в пункте “4. Коды полей в таблицах Продукция и Прайсы”. Так же можно использовать коды дополнительных полей (вкладка Конфигурация / внизу Доп. поля)

если парсится цена, то нужно указывать и поле price_curr_id - в котором записывается ИД валюты, в которой отображается цена на сайте. ИД валюты можно посмотреть здесь:

В настройках поля ИД указывается как значение по умолчанию:

 

Если нужно товар, который парсится, добавлять в группу, то указывается поле category , создать можно только категорию одним уровнем, т.е. дерево категорий не создается. Можно получить полный путь категорий через регулярное выражение и сохранить его используя разделитель, например в виде “Родитель1 / Родетель2/ Категория”

 

Добавление поля

Нажмите кнопку “Добавить”, если по-умолчанию не добавлены нужные вам поля.

Пример настроек:

Колонка Акт. - если не установлен флаг, то поле не парсится, т.е. можно временно отключить поле, если это нужно по каким-то причинам.

N - в этой колонке указывается порядок, в котором собирается информация с сайта. Порядок нужен для случая, когда в одно поле нужно собирать информацию из нескольких блоков, или если какая-то информация может быть в разных карточках в разных местах, чтобы проверить все возможные варианты. Указывайте порядок с интервалом 10, чтобы при необходимости можно было вставить поле без перенумерации.

 

Код поля для сохранения информации

Поле - здесь указывается код поля, в который будет сохранена информация.

Стандартные поля:

code - код товара

title - название товара

article - модель товара

manuf - бренд / производитель

category - группа товара (нельзя использовать для Основного прайса)

price - цена

price_curr_id - ИД валюты для цены

fixed_price - рекомендованная цена (нельзя использовать для Основного прайса)

fix_price_curr_id - ИД валюты для рекомендованной цены цены (нельзя использовать для Основного прайса)

Код пользовательских полей можно посмотреть здесь:

Помимо кода поля можно указать специальные теги:

X-CSRF-Token - если указан данный тег в качестве поля, то информация для этого поля, полученная парсером, будет сохранена и передана в следующий запрос. Используется в случае, если для получения информации на странице используется AJAX, т.е. какие-то подзапросы, в которые нужно передавать специальный “токен”. Не используйте это, если не знаете что такое и зачем.

GOTO - такой тег означает, что в результатах парсинга этого поля вы получаете какую-то ссылку, по которой нужно перейти, чтобы спарсить информацию для всех полей, которые идут следом за этим. Используется в случае, если на странице выводится не полная информация и нужно куда-то нажать, чтобы получить недостающую часть. Обычно при нажатии на какую-то кнопку сайт отправляет запрос и получает информацию, которую затем отображает. Адрес (ссылка) этого запроса обычно есть на странице - вот вы можете его спарсить в этом “поле” и перейти сразу по этой ссылке.

MAINPAGE - такой тег означает, что нужно вернуться на начальную страницу, чтобы спарсить информацию для всех полей, которые идут следом за этим. Используется вместе с тегом GOTO в случае, когда с главной страницы нужно перейти на несколько дополнительных по разным ссылкам, которые есть в исходном коде главной страницы.

Пример использования:

 

Теги для получения информации в поле

Слева - текст html, который находится слева от вырезаемого значения со страницы. Если значение равно ###, то берется текст с самого начала страницы.

Справа - текст html, который находится справа от вырезаемого значения со страницы. Если значение равно ###, то берется текст до конца страницы.

Если Слева указано ### и Справа указана ###, то в качестве результата сохраняется вся страница.

 

Ограничить блок слева - если невозможно однозначно указать теги для вырезаемого значения, т.е. они встречаются несколько раз на странице, то можно сначала вырезать какой-то блок текст, а уже потом в этом блоке вырезать значение тегами “Слева” и “Справа”. Если при этом не указан текст в “Ограничить блок справа”, то парсер просто передвинется к тексту, указанному в “Ограничить блок слева”, и вырежет значение между блоками “Слева” и “Справа” начиная с места, куда сдвинулся.

Ограничить блок справа - html-текст, который находится в конце вырезаемого блока.

Для примера возьмем вот такой код, нам нужно вырезать артикул товара

 

артикул расположен между тегами <td> и </td> , но таких тегов на странице много, соответственно нам нужно сначала вырезать блок текста, который начинается с артикула</td> и заканчивается тегом </tr>, получаем такие настройки:

 

 

Регулярное выражение - можно использовать регулярные выражения для получения текста со страницы. В этом случае для скорости работы желательно сначала вырезать блок текста с помощью предыдущих двух параметров, а уже затем получать из него значение с помощью регулярного выражения. Регулярным выражением можно получить сразу несколько значений, поэтому нужно заполнить еще дополнительные колонки:

Кол-во - если поставить 0, то будут сохранены все значения, полученные регулярным выражением, если другое число - то указанное количество (например 3). Полученные значения записываются в строку. Разделитель значений по умолчанию точка с запятой. Если нужен какой-то другой разделитель, то он указывается в колонке “Объединить”.

Шаблон - здесь указывается шаблон строки, в который подставляется значение, полученное регулярным выражением. Например следующий шаблон https://site.ru/catalog[[value]]

формирует ссылку из ее части, полученной регулярным выражением, полученное значение подставляется вместо [[value]]. Если нужно значение без изменений, то оставляйте поле пустым.

 

<div class="new model"> <p>12345<br/>7890M<p/> </div>

например есть такой код страницы, из которого вам нужно получить 7890M

при этом 12345 - меняющееся значение, на каждой странице разная

здесь можно ограничить блок тегами class="new model"> и </div>

и задать следующее регулярное выражение

<p>.+?<br/>(.+?)<p/>

в нем встречается текст .+? - он означает, что в этом месте может быть любой текст

а так же то же самое, только в скобках (.+?) - это означает то же любой текст, но при этом его нужно сохранить в качестве значения, полученного регулярным выражением.

 

Только цифры - если установлена данная птичка, то полученный текст преобразуется в число (из текста убираются все буквы, остаются только цифры и разделитель дробной части).

Значение по-умолчанию - устанавливается в случае, если на странице для поля получено пустое значение. Если оставить все остальные настройки для поля пустыми, то это значение будет устанавливаться всегда. Можно использовать, например, чтобы задать ИД валюты.

Удалить теги - если установлена данная птичка, то из полученного для поля текста удаляются все html-теги.

 

Проверка - если установлена эта птичка, то в полученном значении для поля будет сделан поиск искомого текста (из вкладки Результаты, колонка “Поиск”) и если текст не найден, то для товара будет установлена ошибка, результаты парсинга этого товара не будут сохранены.

Проверка устанавливается обычно для поля title (Название товара) при использовании парсера, который находит ссылки через поиск на сайте, чтобы убедиться, что найден именно тот товар. Проверка осуществляется по полному вхождению искомого текста в найденный, за исключением символов и знаков пунктуации.

Использовать данный функционал имеет смысл только при поиске по Модели товара или если заранее известно, что ваше название является частью названия на сайте, откуда идет парсинг.

Колонка “Сохранить” - здесь можно указать числа от 1 до 5 для дополнительного сохранения информации, полученной для поля, чтобы ее можно было увидеть в результатах парсинга.

Цифра соответствует колонкам “Значение 1-5”. Сохранить таким образом можно информацию из любого поля.

При парсинге по категории в Значение 1 всегда сохраняется Название товара.

Колонку “Значение 1” можно так же использовать для того, чтобы парсер заново не парсил товары, которые были обработаны ранее и получили уже Значение 1. Для этого нужно в настройках парсера поставить эту птичку:

 

Колонка Замены

В этой колонке можно настройки для замены одного текста на другой в полученном парсером значении.

Окно настроек открывается кнопкой если поставить курсор в ячейку.

В настройках указывается номер по порядку, в котором выполняются замены (обязательно), текст который нужно заменить и на что его заменить.

Колонка Шаблон

В этой колонке можно задать какой-то шаблон, по которому формируется итоговое значение поля. В шаблоне можно использовать следующие теги:

[[value]] - в это место шаблона подставляется значение, которое получено парсером. Например, по каким-то причинам вы не можете парсером получить целиком текст ссылки, а только часть ссылки, без адреса сайта (например, “/category/product1.html”) в этом случае полную ссылку можно сформировать по такому шаблону: https://testsite.ru[[value]]

 

Колонка Папка для файлов

Здесь указывается путь к папке в которую будут скачиваться файлы (фото) по ссылкам, полученным в результате парсинга поля. Если путь не указать, то файлы скачиваться не будут, а только сохраняться ссылки. Если сайт вас не банит, то лучше не скачивать фото парсером, а скачивать их через программу Quad.X заданием Обработка фото и описаний - так не придется скачиваться фото на все товары, которые парсятся, а будут скачаны только те, у которых, например, еще нет фото, или по каким-то другим условиям.

Пример указания настройки:

[SUB]g:\Quad Solutions\files\5_ image\pars\pars523

Как видно из примера, путь указывается к папке Quad Solutions\files\5_ image\pars - она у вас создана по умолчанию, в этой папке нужно добавить подпапку, в которую сохраняются файлы, подпапка должна обязательно называться по следующему правилу:

начало названия - слово site

в конце названия - ИД прайса, в который сохраняются результаты

В моем примере это site523

Если такая папка еще не создана, то она добавится автоматически.

После выполнения парсинга в папке появятся фотки, разбитые на подпапки

название подпапки - первые 4 цифры из ИД товара в парсере

В названии файла после qs_file_ идет так же ИД товара в парсере. В программе это ИД можно увидеть в поле ID Site в прайсе, куда парсилось.

Это поле вы выбирали здесь:

 

Чтобы фото присвоились товарам нужно во вкладке Загрузка прайсов указать приоритет для прайса, из которого нужно брать фото.

Если вы скачали фото этой настройкой, то значение приоритета должно заканчиваться цифрой 9 (девять), чтобы программа заново не качала фото, а брала его из папки.

 

В начале настройки должен присутствовать тег [SUB] который означает что в настройке указан путь к папке, в которой будут созданы подпапки исходя из ИД товара.

Если указать просто путь к папке, без [SUB], то все файлы будут сохранены в эту папку, без подпапок

Бывают случаи, когда в ссылке на фото не указано расширение файла или оно указано как webp, т.е. на сжатое изображение, которая программа при обработке “разжимает” в обычный файл. В этом случае вы можете указать парсеру, чтобы он заменял расширение на jpg или png, т.е. на то, в каком формате скачивается фото или в какой формат оно преобразуется. Для этого нужно указать дополнительно теги [PNG] или [JPG].

Например, ссылка на ваше фото выглядит так https://www.signeda.lt/photo/500x500/44413/PAD11062AL-8W0821171B-posparnis.webp

После выполнения действия Обработка фото и описаний в папку ready вы видите, что появились файлы в формате PNG (можно посмотреть в исходном тексте файла, открыв его в блокноте, или каким-то другим способом). В этом случае в настройке нужно указать:

[SUB][PNG]D:\Quad Solutions\files\5_ image\pars\pars507

и фото при скачивании сохранится с расширением .png вместо .webp

Если у файла не указано расширение в ссылке и вы не указали явно с помощью тега, какое расширение присваивать, то файл сохраняется с расширением .jpg

 

Если вам нужно скачать парсером фото, то рекомендуем поле добавлять этой кнопкой:

В этом случае настройки папки добавятся автоматически. Если вы не хотите сразу скачивать фото, а только сохранить ссылки на них, то нужно очистить после добавления колонку “Папку для файлов”.

Колонка Объединить

Бывают случаи, когда вам в одно поле, например Описание, нужно сохранить несколько блоков текста со страницы парсинга, или если по каким-то тегам на странице нет информации, то попробовать найти по другим тегам - для этого используется настройка в колонке Объединить.

Вы можете задать несколько одинаковых полей для парсинга, а в колонку Объединить указать символ или текст, который будет вставлен между несколькими результатами. Например <br /> - такой html-тег означает перенос строки между объединяемым текстом.

Если указать в эту настройку тег NOCAT, то информация в этих полях не будет объединяться, а каждое последующее значение, если оно найдено, заменит предыдущее. Это можно использовать в случае, когда на странице значение для поля может выводиться в разных карточках товара разными тегами. В этом случае будет записано в поле последнее найденное значение, если такое есть на странице парсинга.

Колонка Дополнительно

В этой колонке может быть следующие параметры:

Настройки парсинга характеристик из текста

Тег “UPFIRST” - в полученном результате первая буква будет сделана заглавной

Тег “FROMRIGHT” - при поиске информации ограниченной настройками слева и справа сначала будет найден текст который справа, и потом от этой позиции найден текст слева, первое его вхождение перед найденным справа текстом.

 

Тег “BLOCKRIGHT” - при получение информации ограниченной настройками блока слева и справа сначала будет найден текст который справа, и потом от этой позиции найден текст слева, первое его вхождение перед найденным справа текстом.

 

Тег “REMURL“ - из текста, полученного парсером, удаляются следующие теги: <a>, <img>, <iframe> и все что между тегами

Получение характеристик

Для записи характеристик желательно добавить пользовательское поле с типом Текст, но можно использовать и поле Полное описание (info).

В настройках поля нужно задать параметры, которыми будет получен полный блок текста, содержащий характеристики.

 

В колонке Шаблон указать OTH->QN

В колонке Дополнительно ввести настройки парсинга названия и значения характеристики из блока текста.

 

Пример характеристик в коде страницы:

 

В Дополнительно указывается 10 строк настроек:

1. Начало блока кода страницы из которого вырезается название характеристики

2. Конец блока кода страницы из которого вырезается название характеристики

3. Код перед названием характеристики

4. Код после названия характеристики

5. Начало блока кода страницы из которого вырезается значение характеристики

6. Конец блока кода страницы из которого вырезается значение характеристики

7. Код перед значением характеристики

8. Код после значения характеристики

9. Код перед названием характеристики, если не нашло название характеристики настройками 3 и 4

10. Код после названием характеристики, если не нашло название характеристики настройками 3 и 4

Настройки 9 и 10 нужны для добавления 2х вариантов получения названия характеристики.

 

В моем примере 1 и 2 строки можно оставить пустыми, так как для получения названия характеристики не нужно вырезать какой-то блок текста, а достаточно ввести только границы в которых название характеристики

 

Для получения значения характеристики нужно ввести границы текста, так как внутри находится еще ссылка на похожие товары по характеристике.

Само значение после этого из текста можно получить между символами ><

 

В случае, если характеристика товара содержит много значений с посторонним текстом, для извлечения можно использовать регулярное выражение.

Пример:

 

Строку 7 нужно начать со слова “REGEXP “ - с пробелом между словом и регулярным выражением.

В строке 8 можно ввести любой текст или пусто.

Результат:

Множественные значения записываются через запятую.

 

Как тестировать парсер?

Во вкладке “Выполнение / Результаты” выберите товар и нажмите кнопку “Тест”, дождись завершения.