Quad.Wiki
Парсер информации из групп товаров
Данный парсер применяется для того, чтобы собрать список товаров, или же в случае, когда с сайта нужно собирать только цены и наличие товаров. В этом случае парсеру не нужно заходить в каждую карточку товара, а достаточно собрать информацию из группы, на одной странице которой может отображаться сразу 20 или больше товаров, соответственно скорость сбора информации будет в разы выше. Пример страницы категории, на которой отображаются сразу несколько товаров:
Настройка парсера осуществляется во вкладке Настройки / Категории
Сначала нужно добавить список ссылок на категории, которые будут парситься. Это можно сделать как вручную, так и с помощью парсера ссылок на группы
Чтобы парсер выполнялся, в настройках парсера должна стоять такая птичка.
Выполняйте тесты, как описано в конце инструкции, чтобы убедиться, что результаты получены парсером правильно, прежде чем запускать парсер.
Настройки парсера
Перейдите во вкладку “Настройки”
1. Нужно указать блок, в котором находится список товаров, для этого указываются теги начала и конца блока
Пример:
Можно указать только “Начало блока товаров”, в этом случае вырезаться блок не будет, а парсер просто перейдет к нужному тегу и начнет парсинг от начала этого тега до конца страницы.
2. Указать блок в котором содержится 1 товар из группы
Будьте внимательны, часто первый товар в группе или последний может быть ограничен разными тегами
Не обязательно чтобы блок точно “вырезал” текст HTML связанный с одним товаром от начала до конца. Достаточно вырезать только ту часть, в которой есть нужная вам информация.
При этом нужно обязательно проверить, чтобы вырезался именно блок товара и эти теги не использовались где-то в другом месте.
Проверять можно путем подсчета количества текста, который вводим в настройку начала блока, на странице. Для этого исходный текст страницы можно вставить в программу Notepad++, открыть там поиск, ввести текст и нажать “Подсчитать”
В моем примере найдено 40 совпадений, при этом на странице отображается 40 товаров, значит все ок. Если бы совпадений было больше или меньше, то нужно было бы разбираться, почему так, и использовать другие теги.
Количество совпадений можно смотреть так же в браузере при поиске - количество найденных должно быть равно количеству товаров на странице, если вы хотите ограничить блок товара.
3. Указать проверку для блока текста страницы, полученного в качестве товара (не обязательно указывать). Бывают случаи, когда в группе на сайте могут в одних и тех же блоках отображаться не только товары, но и какие-нибудь рекламные предложения, в этом случае можно добавить проверку, что в полученном блоке именно товар.
Можно указать какой-то текст, который однозначно определяет что в блоке товар, например, код кнопки купить. Или наоборот, текст, при наличии которого в блоке будет означать, что это не товар.
4. Указать теги для получения Названия товара и ссылки на него. Здесь можно указать как просто теги для значений, так и сначала “вырезать” блок текста, а уже потом из него вырезать название и ссылку.
Блок нужно указывать в случае, если нельзя однозначно определить нужный элемент по его границам. Можно указать только “Блок от” - в этом случае парсер сначала перейдет к этому тегу, а затем вырежет текст для названия или ссылки.
Если ссылка в тексте страницы не полная, можно задать шаблон для получения полной ссылки
В шаблон вместо {URL} подставляется то, что получено парсером для значения поля ссылки.
5. Указать теги цены. Можно указать 2 тега цены. При этом сохраняется только одно значение в поле Цена. Теги для “Цена 2” проверяются только в случае, если не найдено значение по тегам для “Цена 1”. Это можно использовать в случаях, например, когда у товара есть акционная цена, то она выводится в других тегах. Теги акционной цены нужно задавать в “Цена 1” и если по ним ничего не найдет, то будет поиск обычной цены по тегам “Цена 2”.
Для цены так же нужно указать ID валюты, а так же заменить какой-то текст в полученном тексте цены. Заменять текст может понадобиться, когда в цене, например, есть копейки и они отделены не просто точкой или запятой, а каким-то html-кодом. Этот код нужно заменить на запятую.
ИД валюты можно посмотреть во вкладке Конфигурация.
Если не указан ID валюты, то берется основная валюта программы
6. Указать настройки наличия товара
Настройки наличия указываются в зависимости от присутствия того или иного текста в блоке товара. Как правило, наличие отображается в специальном поле на сайте, либо на кнопке “Купить”, когда ее текст меняется, например, на “Заказать”. Или же кнопки купить вообще может не быть.
Можно определить только 1 тип наличия, например “В наличии” - в этом случае, если не найден текст, определяющий, что товар в наличии, товар будет сохранен как “Нет в наличии”. Или наоборот, задать текст для “Нет в наличии”, в этом случае все остальные товары будут “В наличии”.
Настройки указываются в этом блоке
в виде: ИД типа наличия|текст поиска, т.е. ИД и текст поиска разделяются вертикальной чертой. ИД типа наличия можно посмотреть во вкладке Конфигурация.
Ид типа “Нет в наличии” всегда 2. В наличии - 1, Под заказ - 3.
Наличие по умолчанию, на случай, если ни один из заданных типов наличия не найден, можно указать так: 3|def , т.е. вместо текста поиска указывается ключевое слово def. В моем примере наличие указывается “Под заказ”, если других типов наличия не найдено.
При необходимости, можно так же сохранять текст наличия, если он отображается в группе. Например, срок доставки.
Теги указываются здесь:
7. Указать теги для полей Код и Бренд, при необходимости. Дополнительно к полям, указанным ранее, можно сохранить еще код и бренд товара, если они выводятся в блоке товара в категории.
Теги указываются по такому же принципу, как и теги для названия и ссылки.
Другие поля
Если нужно загрузить информацию в какие-то другие поля, то они настраиваются здесь:
Каждая строка - отдельное поле.
В строке можно указать от 5 до 8 настроек парсинга, разделенных вертикальной чертой |
Пример:
f_3rtf2qase|1|1|"profile":"|"|blockfrom|blockto|1
f_3rtf2qase - название поля, в которое сохраняется информация
1 - второй параметр, 1 - если должно быть число, 0 - если строка
1 - третий параметр, 1 - если полученное значение нужно добавить в конец названия товара, 0 - если не нужно добавлять
"profile":" - тег начала значения (4-ый)
" - тег завершения значений (5-ый)
blockfrom - тег начала блока со значением (6-й)
blockto - тег конца блока со значением (7-ой)
7-ой или 6 и 7 теги можно не указывать.
1 - восьмой параметр, ставится 1, если нужно очистить полученный результат от html-тегов. Этот параметр можно так же не указывать. Если его нужно указать, при этом не нужен текст поиска блоков, то указывается так:
f_3rtf2qase|1|1|"profile":"|"|||1
т.е. вертикальные черты должны быть и между ними пусто.
Если необходимо производить какую-то дополнительную обработку значений, то нужно эти значения получать из карточек товаров. Парсер информации из карточек товаров
Другие настройки
Флаг “Страница в JSON формате” - нужно использовать, если при парсинг категорий получает не HTML текст, а JSON.
Позиция товара в поле - здесь указывается код поля, в которое сохраняется номер позиции товара в категории (если, например, при открытии категории сайта товар отображается пятым, то сюда сохранится цифра 5). Это можно использовать, например, для сохранения информации о популярности товара на сайте, если в группе он выводится по популярности или можно его так отсортировать.
Тестирование парсера
В ходе настройки можно проверять, какую информацию собирает парсер по тем тегам, которые вы указали. Для этого нужно ввести ссылку на какую-то группу товаров с сайта (или несколько ссылок, если в разных группах на сайте информация отображается по-разному), по которой будет тестироваться и нажать кнопку “Тест”.
Будет отображена информация, которую получил парсер, либо какие-то ошибки:
При нажатии кнопки “Тест” текст страницы, который возвращает сайт-источник, сохраняется в файл
Quad Solutions\crmpack\temp\all_page_N.html , где N - ид парсера
Блок текста со всеми товарами сохраняется в файл
Quad Solutions\crmpack\temp\all_prod_block_N.txt, где N - ид парсера
Можно в этих файлах попробовать найти нужный вам текст и теги HTML вокруг этого текста, если введенные из браузера не работают.