Дополнительные макросы шаблона вывода

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


На этой странице перечислены не все макросы шаблона вывода.

Все макросы шаблона вывода есть в дереве макросов.

Content Downloader


Навигация:

Основные положения

Автоматический Парсинг характеристик товаров из HTML-таблиц в таблицу CSV ([HORIZTABLE], [VERTTABLE])

Автоматический парсинг сразу всех характеристик товаров с автоматическим созданием соответствующих для них колонок в таблице CSV ([DYNAMICVALUES])

Проверка на наличие слов (вхождений) в тексте и совершение определенных действий в зависимости от результата проверки ([CHECKENTRY(вхождение 1||вхождение 2)]текст[/CHECKENTRY])

Исключение парсинга дублей информации с проверкой по ключевому значению (наименование товара, артикул или иная информация) ([DUPIGNORE])

Макрос извлечения картинок из html-кода и их вывод через запятую ([CSVIMAGES(метод извлечения)]html-код[/CSVIMAGES])

Макрос извлечения рубрик товаров из html-кода и их вывод через указанный разделитель ([BREADCRUMBS(чем разделены рубрики в html-коде||чем разделить их в результате)]html-код[/BREADCRUMBS])

Макрос условия [IF1]условие[THEN]если да[ELSE]если нет[/IF1]

Макрос случайного вывода текста ({..|..|..|..})

Макрос перемешивания строк (SHAKESTRINGS)

Макрос для работы с ценой товара (изменение и форматирование)

Вставка ссылки на источник (ссылки, откуда парсите каждый WEB-документ)

Создание короткой новости (обрезка текста до указанной длины)

Создание короткой новости для WordPress (вставка тега more)

Подгрузка данных из любых указанных URL (GETMORECONTENT)

Удаление указанных тегов (DELTAGS)

Преобразование html-кода в текст с возможностью оставлять перечисленные теги (HTMTOTXT)

Вставка нарастающего числового ID ([INT_ID] и [COUNT])

Макрос для импорта рубрик в WordPress ([CATS])

Макрос синонимизации текста (SYN)

Макрос задания имен файлов загружаемых изображений взятых из HTML-тегов img (IMAGESNAMES)

Макрос задания имен файлов сохраняемых документов (DOCNAME)

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

Преобразование выбранного текста в одну строку (ONELINE)

Макрос поиск-замены ([REPLACE(что заменить|на что заменить)]…[/REPLACE])

[WEBASYSTIMG(разделитель)]image.jpg[/WEBASYSTIMG] (image.jpg,image_thm.jpg,image_enl.jpg)

Фильтрация документов по условию [DIGIFILTER]…[/DIGIFILTER]

Фильтрация строк по ключевым словам (удаление лишних строк, которые содержат или не содержат заданные ключевые слова)

Транслитизация русскоязычных символов (TOTRANSLITE)

[COPY:от какого по счету символа копировать|сколько символов скопировать]текст[/COPY] (обрезка лишних символов текста (скопирует часть текста и вставит ее вместо макроса))

Макрос задания переменных и их многократного вывода в результат ([VAR])

Замена умышленно-подмененных схожих по написанию символов английского/русского языка (a, c, e, o, p…) на оригинальные ([FIXLAYOUT])

Добавление URL-адреса в список ссылок при парсинге ([ADDURL])

Размножение строки с использованием в ней нарастающей переменной ([GENERATE])

Извлечение из HTML-кода URL-адресов с желаемыми анкорами (GETURLSBYANCHORS)

Генерация уникальных ID товаров или статей при парсинге контента ([SKU_UNIQUE])

Получение максимального, минимального, среднего или случайного значения из ряда чисел ([GETVALUE])

Получение редиректов ссылок (GETREDIRECT)

Подсчет количества элементов текста, подсчет количества вхождений указанной подстроки в тексте (макросы [COUNTUP1] и [COUNTUP2])

Преобразование многострочных HTML-таблиц в двухстрочные (методом объединения данных первых нескольких рядов ячеек, кроме последнего, макрос [MERGETABLEROWS])

Получение данных ответа сервера (код ответа, cookie, редирект, макрос [GETRESPONSE])

Генерация уникальных ЧПУ из любой текстовой строки (макрос [SURLUNIQUE])

Добавление текстовых данных к началу или концу строк (или сегментов) обрабатываемого текста (макрос [ADDTEXT])


Для возврата к меню навигации используйте клавишу home



Основные положения


– Макросы шаблона вывода могут использоваться как в редакторе шаблона вывода (на панели инструментов программы кнопка “редактировать шаблон вывода”), так и в настройке обычных и повторяющихся границ парсинга (кнопки: “дополнительные настройки границ парсинга”, “настройка повторяющихся границ”)
Ниже приведены далеко не все макросы шаблона вывода. Для того, чтобы ознакомиться со всеми макросами и посмотреть их краткое описание, откройте редактор шаблона вывода (на панели инструментов программы кнопка “редактировать шаблон вывода (ctrl+2)”) и изучите дерево макросов в левой части редактора
– Макросы шаблона вывода выполняются в строгом порядке (порядок выполнения функций и макросов (а также все изменения кода документа) можно посмотреть в нижней части окна предпросмотра результатов парсинга контента)

Content Downloader




Автоматический парсинг характеристик товаров из HTML-таблиц в таблицу CSV ([HORIZTABLE], [VERTTABLE])


Подробное описание макросов [HORIZTABLE] и [VERTTABLE] смотрим тут http://sbfactory.ru/cd/?p=2215




Автоматический парсинг сразу всех характеристик товаров с автоматическим созданием соответствующих для них колонок в таблице CSV ([DYNAMICVALUES])


Подробное описание макроса смотрим тут http://sbfactory.ru/cd/?p=2170




Проверка на наличие слов (вхождений) в тексте и совершение определенных действий в зависимости от результата проверки ([CHECKENTRY(вхождение 1||вхождение 2)]текст[/CHECKENTRY])


Например, у вас есть текст, в котором нужно проверить наличие определенных слов. Если слова в тексте найдены, то макрос выведет этот текст или удалит его, или вообще выведет третий текст.

Примеры использования этого замечательного макроса:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[CHECKENTRY(55)]55555[/CHECKENTRY] -> выведет текст "55555", так как вхождение "55" имеет место быть в тексте ("55555")
 
[CHECKENTRY(333||55)]55555[/CHECKENTRY] -> выведет текст "55555", так как одно из вхождений ("55") содержится в тексте
 
[CHECKENTRY(ab1[WORD])]ab1 cde[/CHECKENTRY] -> выведет текст ab1 cde, так как слово ab1 содержится в тексте
 
[CHECKENTRY(ab1[WORD])]ab1cde[/CHECKENTRY] -> ничего не выведет, так как слово ab1 не содержится в тексте
 
[CHECKENTRY(333||55[ALLMUSTBE])]55555[/CHECKENTRY] -> ничего не выведет, так как параметр [ALLMUSTBE] требует наличия всех вхождений в тексте
 
[CHECKENTRY(333)]55555[ELSETEXT]текст[/CHECKENTRY] -> выведет "текст", так как "текст" стоит после [ELSETEXT], после оператора [ELSETEXT] прописывается то, что нужно вывести, если условие(я) в макросе CHECKENTRY не выполнено(ы)
 
[CHECKENTRY(555)]55555[THENTEXT]текст 1[ELSETEXT]текст 2[/CHECKENTRY] -> выведет "текст 1", так как "текст 1" стоит после [THENTEXT], после оператора [THENTEXT] прописывается то, что нужно вывести, если условие(я) в макросе CHECKENTRY выполнено(ы)
 
[CHECKENTRY(333||55[ALLMUSTBE])]55555333[THENTEXT]7777777[/CHECKENTRY] -> выведет 7777777, так как все вхождения в "55555333" есть
 
[CHECKENTRY(333||55[ALLMUSTBE][IFNOT])]55555333[THENTEXT]7777777[/CHECKENTRY] -> не выведет ничего, так как все вхождения в "55555333" есть, а параметр [IFNOT] преобразует результат условия из TRUE в FALSE (если FALSE, то в TRUE)
 
[CHECKENTRY(333||55[ALLMUSTBE][IFNOT])]55555333[THENTEXT]7777777[ELSETEXT]привет[/CHECKENTRY] -> выведет "привет", который стоит после [ELSETEXT], так как условие не соблюдено (из-за параметра [IFNOT], который преобразовал TRUE в FALSE)
 
Для обозначения вхождений, которые НЕ должны находиться в тексте, добавьте к ним (к нужным вхождениям) параметр [NOT]:
[CHECKENTRY(333||55||[NOT]2||[NOT]6[ALLMUSTBE])]55555333[THENTEXT]7777777[ELSETEXT]привет[/CHECKENTRY] -> выведет 7777777, который стоит после [THENTEXT], так как условие соблюдено (вхождения 333 и 55 находятся в тексте и, в то же время, вхождений 2 и 6 в тексте нет)
[CHECKENTRY(333||55||[NOT]2||[NOT]6[ALLMUSTBE])]555552333[THENTEXT]7777777[ELSETEXT]привет[/CHECKENTRY] -> выведет "привет", который стоит после [ELSETEXT], так как условие не соблюдено (вхождения 333 и 55 находятся в тексте а, в то же время, вхождение 2 присутствует в тексте)
 
[CHECKENTRY(55[FULL])]55555[/CHECKENTRY] -> ничего не выведет, так как параметр [FULL] требует полного совпадения вхождения с "55555", а "55555" не есть "55"
 
[CHECKENTRY(55555||333[FULL])]55555[/CHECKENTRY] -> выведет "55555", так как одно из вхождений полностью совпадает с "55555" (параметр [FULL] требует полного совпадения вхождения с текстом)
 
[CHECKENTRY([ANYTEXT])]текст[THENTEXT]если текст не пустой[ELSETEXT]если текст пустой[/CHECKENTRY] -> выведет "если текст не пустой", так как с параметром [ANYTEXT] проверяется наличие любого текста
 
[CHECKENTRY(55555||333)]55555[THENTEXT][USEDKEY][/CHECKENTRY] -> выдаст "55555", так как оператор [USEDKEY] выводит значение "совпавшего" ключа
 
[CHECKENTRY(55555||333||777)]55555777[THENTEXT][USEDKEYS][/CHECKENTRY] -> выдаст "55555,777", так как оператор [USEDKEYS] выводит значения всех "совпавших" ключей

Для вывода текста (где проверялись вхождения) в результат работы макроса ([THENTEXT] или [ELSETEXT]) используйте оператор [CTEXT]

1
2
3
[CHECKENTRY(555)]55555[THENTEXT]другой текст [CTEXT] другой текст[ELSETEXT]другой текст [CTEXT] другой текст[/CHECKENTRY]
 
В данном случае, в результате на месте [CTEXT] будет выведено 55555

Для обозначения символа переноса строки во вхождениях макроса [CHECKENTRY] используйте оператор {lf}

1
[CHECKENTRY(Disallow: /{lf}||Disallow: *?*{lf})][FIRST_REPLACE({get}|{get}{br})][DOCSOURCE][/FIRST_REPLACE][THENTEXT]<CD_DOCURL!>[/CHECKENTRY]





Исключение парсинга дублей информации с проверкой по ключевому значению (наименование товара, артикул или иная информация) ([DUPIGNORE])


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

1
[DUPIGNORE][KEY]<CD_GRAN_1!>[/KEY][CSVCS]<NIMG><CD_GRAN_2!></NIMG>[CSVCS][VERTTABLE][PREFIX][/PREFIX][MIN]2[/MIN]<CD_GRAN_3!>[/VERTTABLE][/DUPIGNORE]

Где в [KEY]…[/KEY] может отправляться, например, наименование, артикул товара или любая другая информация, по которой будет происходить сверка на дубли. Если отсылаемое значение [KEY] уже есть в “виртуальном списке” значений, то произойдет удаление всего содержимого макроса [DUPIGNORE]…[/DUPIGNORE]. Если отсылаемое значение [KEY] в “виртуальном списке” не присутствует, то оно будет внесено в этот список и удаления содержимого макроса [DUPIGNORE]…[/DUPIGNORE] не произойдет.

Если вам нужно всегда удалять из результатов парсинга отправляемое значение [KEY], то добавьте в любое место макроса [DUPIGNORE] (любое место в пределах макроса) оператор [DELETEKEY].

Для автоматической загрузки и сохранения “виртуального списка” значений [KEY] при парсинге вы можете подключить любой текстовый файл на локальном диске. Подключение файла производится в опциях макроса [DUPIGNORE] (меню – файл – настройка макросов -> DUPIGNORE). Загрузка списка из файла происходит при запуске парсинга или при выполнении предпросмотра результатов парсинга контента, а запись списка значений [KEY] в указанный файл производится только по завершении процедуры парсинга (не при предпросмотре).


Значения [KEY] при парсинге каждого последующего WEB-документа не сбрасываются. Для сброса значений [KEY] вы можете поместить оператор [RESETDATA] в любое место макроса:

1
[DUPIGNORE][KEY]<CD_GRAN_1!>[/KEY]текст[RESETDATA][/DUPIGNORE]



Если внутрь макроса поместить оператор [IFFILTERED], то стоящий после него текст будет вставлен в результат работы макроса, когда сработает фильтр по дублю:

1
[DUPIGNORE][KEY]<CD_GRAN_1!>[/KEY]текст, если не отфильтруется[IFFILTERED]текст, если отфильтруется[/DUPIGNORE]



Если внутрь KEY поместить только текст DO_FILTER, то фильтрация произойдет в любом случае:

1
[DUPIGNORE][KEY]DO_FILTER[/KEY]текст[/DUPIGNORE]



Обратите внимание, у макроса [DUPIGNORE] есть дублирующий макрос [DUPIGNORE2], который работает так же, но выполняется практически после всех остальных макросов:

1
[DUPIGNORE2][KEY]<CD_GRAN_1!>[/KEY][CSVCS]<NIMG><CD_GRAN_2!></NIMG>[CSVCS][VERTTABLE][PREFIX][/PREFIX][MIN]2[/MIN]<CD_GRAN_3!>[/VERTTABLE][/DUPIGNORE2]






Макрос извлечения картинок из html-кода и их вывод через запятую ([CSVIMAGES(метод извлечения)]html-код[/CSVIMAGES])


Допустим, в коде web-страницы, которую мы парсим (например, страница товара в интернет-магазине), есть блок с изображениями товара, где их несколько штук. Самый удобный способ парсинга сразу всех этих картинок – использование макроса шаблона вывода [CSVIMAGES].

Первым делом, нам нужно задать границу парсинга (например, <CD_GRAN_2!>) для всего блока изображений (ту часть кода, где есть все картинки). Затем, чтобы загрузить эти картинки на диск, а в ячейку CSV вывести их имена файлов через запятую, следует использовать следующую конструкцию:

1
[CSVIMAGES(метод извлечения картинок из кода)]<CD_GRAN_2!>[/CSVIMAGES]

Где метод извлечения картинок из кода может быть: a, img, начало|конец
Рассмотрим эти методы подробнее:
a – Извлечение адресов картинок из тегов ссылок (<a href=адрес>)
img – Извлечение адресов картинок из тегов изображений (<img src=адрес>)
начало|конец – Для парсинга картинок из блока кода, где их адреса взяты в определенные повторяющиеся элементы (работает аналогично повторяющимся границам парсинга).

Можно указать максимальное число картинок:

1
[CSVIMAGES(метод извлечения картинок из кода@2)]<CD_GRAN_2!>[/CSVIMAGES]

Оно указывается через символ @ сразу после метода извлечения картинок из кода (число 2 в примере выше).


Рассмотрим новые параметры макроса:

1
[CSVIMAGES(метод извлечения картинок из кода)][PREF]префикс[/PREF][FIXED]3[/FIXED][SEP]{CSVCS}[/SEP][DFMODE][CHECKEXTENSION]<CD_GRAN_2!>[/CSVIMAGES]

[PREF] – префикс, текст или макрос, который будет добавляться перед каждой картинкой в результате работы макроса [CSVIMAGES]

[SEP]{CSVCS}[/SEP] – разделитель выводимых картинок

[FIXED] – задать фиксированное количество элементов (целое число), выводимых макросом через указанный разделитель (если число [FIXED] больше количества найденных картинок, то будут вставлены разделители между пустыми выводимыми значениями для достижения заданного количества создаваемых столбцов CSV)

[CHECKEXTENSION] – проверка полученных ссылок картинок на наличие в них расширения изображений

[DFMODE] – включает режим загрузки найденных картинок с помощью макроса <DOWNLOADFILE>



PS: Для задания имен файлов картинок вы можете добавить макрос [DFN] в параметр [PREF].

Выберите разрешение 720p HD!





Допустим, в коде web-страницы, которую мы парсим (например, страница товара в интернет-магазине), есть блок с рубриками товара (Электроника – Смартфоны – Apple), где их несколько штук. Самый удобный способ парсинга сразу всех этих рубрик – использование макроса шаблона вывода [BREADCRUMBS].

Первым делом, нам нужно задать границу парсинга (например, <CD_GRAN_2!>) для всего блока с рубриками (ту часть кода, где есть все рубрики). Затем, чтобы спарсить эти рубрики и вывести их в ячейку CSV через указанный разделитель, следует использовать следующую конструкцию:

1
[BREADCRUMBS(тут указать, чем разделены рубрики в html-коде||тут указать, чем разделить их в результате||сколько элементов обрезать от начала||сколько элементов обрезать от конца)]<CD_GRAN_2!>[/BREADCRUMBS]

Если вам нужно задать минимальное количество выводимых макросом разделителей (даже если не будет выведена ни одна рубрика), добавьте в параметр [MIN] следующим способом:

1
2
[BREADCRUMBS(разделитель в коде||чем разделить в результате[MIN]минимальное значение)]
[BREADCRUMBS(&rarr;||[CSVCS][MIN]5)]<CD_GRAN_1!>[/BREADCRUMBS]

Где 5 и есть то минимальное количество.
Параметр [MIN] нужно применять в том случае, когда количество рубрик и подрубрик на сайте меняется от товара к товару и вам нужно, чтобы следующие, после рубрик, ячейки CSV не плавали туда-сюда.

Примечание: Добавлен параметр [FIXED], который используется вместо [MIN] для использования фиксированного количества разделителей элементов на выходе.

Выберите разрешение 720p HD!

1
2
3
4
5
6
7
8
9
10
11
Добавьте параметр [TYPE2] и тогда результат будет выведен в лестничном виде
 
На входе:
[BREADCRUMBS(>|||)][TYPE2]1>2>3>4>5[/BREADCRUMBS]
 
На выходе:
1
1|2
1|2|3
1|2|3|4
1|2|3|4|5


1
2
3
4
5
6
7
8
9
10
11
Добавьте параметр [TYPE2R] и тогда результат будет выведен в лестничном виде в обратном порядке
 
На входе:
[BREADCRUMBS(>|||)][TYPE2R]1>2>3>4>5[/BREADCRUMBS]
 
На выходе:
1|2|3|4|5
1|2|3|4
1|2|3
1|2
1


1
2
3
4
5
6
7
8
9
Добавьте параметр [TYPE3] и тогда результат будет выведен в таком виде
 
На входе:
[BREADCRUMBS(>||)][TYPE3]1>2>3>4>5[/BREADCRUMBS]
 
На выходе:
!1[CSVLB]!!2[CSVLB]!!!3[CSVLB]!!!!4[CSVLB]!!!!!5
 
Где [CSVLB] служит для обозначения переноса строки CSV


1
2
3
4
5
6
7
8
9
Добавьте параметр [TYPE4] и тогда результат будет выведен в таком виде
 
На входе:
[BREADCRUMBS(>||)][TYPE4]1>2>3>4>5[/BREADCRUMBS]
 
На выходе:
!1[CSVLB]!!2[CSVLB]!!!3[CSVLB]!!!!4[CSVLB]5
 
Где [CSVLB] служит для обозначения переноса строки CSV





Макрос условия [IF1]условие[THEN]если да[ELSE]если нет[/IF1]


Если условие будет верно, то выведется то, что после [THEN]. Если условие неверно, то выведется то, что после [ELSE] (один из параметров [THEN] или [ELSE] можно опускать).

В условиях можно использовать следующие операторы сравнений:
> больше
>= больше или равно
< меньше <= меньше или равно [TEXTEQUAL] сравнение двух текстовых значений на одинаковость Также в условиях можно использовать простые арифметические операции (+, -, *, /)(но только по одному с каждой стороны оператора условия и без скобок) Примеры использования макроса условий:

1
2
3
4
5
6
7
8
9
10
[IF1]число1>=число2[THEN]да[ELSE]нет[/IF1]
[IF1]число1>=число2[THEN]да[/IF1]
[IFF]число1>=число2[THEN]да[/IFF] (то же, что и [IF1], но выполняется раньше всех других макросов)
[IF0]число1>=число2[THEN]да[/IF0] (то же, что и [IF1], но имеет более ранний порядок выполнения по отношению к другим макросам)
[IF2]число1>=число2[THEN]да[/IF2] (то же, что и [IF1], но имеет более поздний порядок выполнения по отношению к другим макросам)
[IF1]число1>=число2[ELSE]нет[/IF1]
[IF1]число1*2>=число2+1[THEN]да[ELSE]нет[/IF1]
[IF1]текст1[TEXTEQUAL]текст2[THEN]выведет это, если текст 1 равен тексту 2[ELSE]нет[/IF1]
[IF1][CHARCOUNT]<CD_GRAN_1!>[/CHARCOUNT]>=5[THEN]да[ELSE]нет[/IF1]
[IF1][CHARCOUNT]<CD_GRAN_1!>[/CHARCOUNT]>[CHARCOUNT]<CD_GRAN_2!>[/CHARCOUNT][THEN]да[ELSE]нет[/IF1]

Примечание: Макрос CHARCOUNT подсчитывает длину текста в символах.


Для работы с логическими выражениями используйте оператор [LOGIC]

1
2
[IF1][LOGIC]((условие 1) or (условие 2)) and (условие 3)[THEN]да[ELSE]нет[/IF1]
[IF1][LOGIC]((5>3) or (5>=3)) and (3=3)[THEN]да[ELSE]нет[/IF1]

Примечание: При использовании оператора [LOGIC] возможна обработка нескольких условий (с использованием круглых скобок, or и and) в одном макросе [IF].


Для получения позиции подстроки в строке используйте внутренний макрос [IF_GETPOS]

1
[IF1][IF_GETPOS]{WHAT}подстрока{/WHAT}{WHERE}строка{/WHERE}[/IF_GETPOS]>=1[THEN]да[ELSE]нет[/IF1] (выведет да, если позиция подстроки в строке больше либо равна 1)
[IF_GETPOS] работает внутри условий макросов [IF] и возвращает позицию подстроки в строке. Если строка не содержит в себе подстроку, вернется 0.




Макрос случайного вывода текста ({..|..|..|..})


Например, в шаблоне вывода имеем:

1
{текст1|текст2|текст3|текст4|текст5}

На выходе получим:

1
текст3

Этот макрос случайно выводит один из заданных вариантов (при парсинге контента).

Также может быть использована конструкция следующего вида:

1
{<CD_GRAN_1!>|<CD_GRAN_2!>|<CD_GRAN_3!>}

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

ВАЖНО: Макрос случайного вывода текста по умолчанию отключен! Включить его можно в главное меню -> "настройка" -> "настройка макросов" -> "{..|..|..|..} (макрос случайного вывода текста)".


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

Разделитель значений указывается в параметре {DELIMITER}

1
[RANDOMWORD]{DELIMITER}|{/DELIMITER}1|2|3[/RANDOMWORD]





Макрос перемешивания строк (SHAKESTRINGS)


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

Например, имеем:

1
2
3
<SHAKESTRINGS>Строка1
Строка2
Строка3</SHAKESTRINGS>

В результате получим:

1
2
3
Строка3
Строка1
Строка2

Также между тегами SHAKESTRINGS могут находится макросы границ парсинга:

1
<SHAKESTRINGS><CD_GRAN_1!></SHAKESTRINGS>

В этом случае будут перемешаны все строки текста CD_GRAN_1!.

Примечание: При сохранении в CSV, все переносы строк будут заменяться на другой заданный символ или вообще удаляться. В этом случае, макрос SHAKESTRINGS не сработает на тексте границы парсинга. Для того, чтобы перемешивать строки в границах парсинга (при сохранении в CSV), используйте опцию “перемешивать строки” в “дополнительные настройки границ парсинга”.




Макрос для работы с ценой товара (изменение и форматирование)


Данный макрос преобразует строку с ценой в нужный формат для CSV с поочередным выполнением введенных математических операций (| есть разделитель операций).

Например, имеем:

1
2
3
4
5
6
7
8
<TOPRICE><b> - 12.03 $</b></TOPRICE>
<TOPRICE*0,87><b> - 12.03 $</b></TOPRICE>
<TOPRICE*0,87|+7|/2><b> - 12.03 $</b></TOPRICE>
<TOPRICE>7777,777</TOPRICE> - по умолчанию идет округление до сотых
<TOPRICE>[R-1]7777,777</TOPRICE> - округление до десятых
<TOPRICE>[R0]7777,777</TOPRICE> - округление до целых
<TOPRICE>[R1]7777,777</TOPRICE> - округление до десятков
<TOPRICE>[R2]7777,777</TOPRICE> - округление до сотен

В результате получим:

1
2
3
4
5
6
7
8
12,03
10,47
8,73
7777,78 - по умолчанию идет округление до сотых
7777,8 - округление до десятых
7778 - округление до целых
7780 - округление до десятков
7800 - округление до сотен

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




Вставка ссылки на источник (ссылки, откуда парсите каждый WEB-документ)


Этот макрос вставит в результирующий документ адрес веб-страницы с которой производится парсинг контента.

Например, мы парсим контент со страницы http://sbfactory.ru/?p=600, в шаблоне вывода имеем:

1
Источник: <CD_DOCURL!>

После парсинга получим:

1
Источник: http://sbfactory.ru/?p=600





Создание короткой новости (обрезка текста до указанной длины)


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

1
2
Короткая новость: <SHORT len="250" //><CD_GRAN_1!></SHORT>...
Полная новость: <CD_GRAN_1!>

Также можно использовать параметр end

1
Короткая новость: <SHORT len="250" end=".|!|?" //><CD_GRAN_1!></SHORT>

В этом случае программа обрежет все, что стоит после 250 символов от начала документа и заканчивается на точку, восклицательный знак или вопросительный знак. Параметров end может быть несколько, они разделяются символом |. Когда программа встретит первый из них, в этом месте обрежет текст.

1
Короткая новость: <SHORT len="250" end="<br>" crop //><CD_GRAN_1!></SHORT>

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




Создание короткой новости для WordPress (вставка тега more)


С помощью макроса IMORE можно вставить тег <!–more–> в указанный текст. Параметр len задает количество символов, после которого будет вставлен тег <!–more–>. При подсчете количества символов теги не учитываются.

1
<IMORE len="250" //><CD_GRAN_1!></IMORE>

Также можно использовать параметр end

1
<IMORE len="250" end=".|!|?" //><CD_GRAN_1!></IMORE>

В этом случае программа отсчитает 250 символов, затем найдет точку, восклицательный знак или вопросительный знак и вставит в это место тег <!–more–>. Параметров end может быть несколько, они разделяются символом |.




Подгрузка данных из любых указанных URL (GETMORECONTENT)


С помощью этого макроса можно парсить в один документ сразу с нескольких url. Также он может служить для задания неограниченного количества границ парсинга.

Читать подробный мануал




Удаление указанных тегов (DELTAGS)


Удаление указанных тегов в заданном тексте

1
[DELTAGS:a,br,p]текст, в котором надо удалить теги[/DELTAGS]

где a,br,p – теги, которые надо удалить из “текст, в котором надо удалить теги” (теги указываются через запятую, без пробелов, без скобок)


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

1
2
3
4
5
6
7
8
9
[DELTAGS:a(параметр=значение),br,p]текст, в котором надо удалить теги[/DELTAGS]
[DELTAGS:a(href=Youtube),br,p]текст, в котором надо удалить теги[/DELTAGS]
[DELTAGS:a(href=Google),br,p]текст, в котором надо удалить теги[/DELTAGS]
 
[DELTAGS:a(href=Google|href=Youtube),br,p]текст, в котором надо удалить теги[/DELTAGS]
Как видим выше, через символ вертикальной черты можно указать несколько пар параметров и значений
 
Также обратите внимание, что тег <a> имеет закрывающий </a>. Чтобы не удалялся закрывающий, добавьте символ / после каждой нужной пары параметров и значений
[DELTAGS:a(href=Google/|href=Youtube/),br,p]текст, в котором надо удалить теги[/DELTAGS]





Преобразование html-кода в текст с возможностью оставлять перечисленные теги (HTMTOTXT)


Удаление всех тегов, кроме указанных

1
[HTMTOTXT:a,br,p]текст, в котором надо удалить теги[/HTMTOTXT]

где a,br,p – теги, которые надо оставить в “текст, в котором надо удалить теги” (теги указываются через запятую, без пробелов, без скобок)


Если вам не нужно обрабатывать какую-нибудь область кода, то обозначьте ее в [EXCLUDE] (начало не затрагиваемой области кода||конец не затрагиваемой области кода)

1
[HTMTOTXT:a,br,p][EXCLUDE]<code>||</code>[/EXCLUDE]текст, в котором надо удалить теги[/HTMTOTXT]

В этом случае, макрос [HTMTOTXT] не затронет все, что находится внутри <code>…</code>


Для отключения преобразования “экранов” скобок HTML-тегов (lt, gt), добавьте lt и gt следующим образом

1
[HTMTOTXT:a,br,p,lt,gt]...

При этом необходимо отключить функцию преобразования HTML мнемоников в окне: вкладка "Контент" -> группа "Парсинг и обработка" -> кнопка "дополнительные функции обработки контента".




Вставка нарастающего числового ID ([INT_ID] и [COUNT])


Вставка числового ID в любое место шаблона вывода. ID будет увеличиваться с каждым новым загружаемым документом (сначала вставится 1, затем 2, 3, 4, 5 и так далее…). Стартовое значение макроса можно указать в его настройках (в окне “редактор шаблона вывода” на панели инструментов: кнопка “дополнительные макросы шаблона вывода” – “[INT_ID]” – “настроить макрос”)

1
[INT_ID]

Для сброса макроса [INT_ID] на его стартовое значение вставьте в любое место шаблона вывода оператор [RESET_INT_ID].

Более подробное описание макросов [INT_ID] и описание макроса [COUNT]




Макрос для импорта рубрик в WordPress (CATS)


Вставьте следующую конструкцию в шаблон вывода для присвоения рубрик, подрубрик, подподрубрик (и так далее) к записям при создании файла импорта в WordPress.

1
[CATS]Автомобили///<CD_GRAN_1!>///<CD_GRAN_2!>[/CATS]

Используйте макросы CD_GRAN для вставки названий рубрик в макрос CATS (например, при парсинге вместо CD_GRAN_1! вставится “Toyota”, а вместо CD_GRAN_2! вставится “Mark II”). В качестве разделителя/разделителей рубрик от подрубрик используйте ///.

После парсинга зайдите в “обработка и импорт в КМС” (на панели инструментов), добавьте загруженные файлы. Затем, на панели инструментов, нажмите “создать файл импорта” и, в открывшемся диалоговом окне, нажмите кнопку “создать файл импорта”. После этих действий программа создаст файл импорта со структурой рубрик согласно макросам CATS в каждой статье. Сами макросы будут удалены из текста статей.

PS: Макросы CATS не работают при создании файлов импорта для DLE/старых версий WP.




Макрос синонимизации текста (SYN)


Для синонимизации контента (замены слов на синонимы) вставьте следующую конструкцию в шаблон вывода

1
[SYN]Текст для синонимизации[/SYN]

Для отключения синонимизации внутреннего кода HTML-тегов добавьте параметр [AVOIDHTMLTAGS]

1
[SYN][AVOIDHTMLTAGS]Текст для синонимизации[/SYN]

База синонимов лежит в папке с программой (файл data.txt) и может быть заменена на другую с аналогичным форматом (слово,синоним1,синоним2,синоним3,…,синоним9).




Макрос задания имен файлов загружаемых изображений взятых из HTML-тегов img (IMAGESNAMES)


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

В каждом документе макрос может применяться только 1 раз.

1
2
3
Другой текст/код
[IMAGESNAMES]<FILE=C:\content\keys.txt>[/IMAGESNAMES]
Другой текст/код





Макрос задания имен файлов сохраняемых документов (DOCNAME)


Этот макрос используется для задания имен файлов сохраняемых документов (контент, который мы парсим).

В каждом документе макрос может применяться только 1 раз.

1
2
3
Другой текст/код
[DOCNAME]777\1234567.txt[/DOCNAME]
Другой текст/код

Как видно, тут задается сразу имя папки (777) и имя файла. Имя папки можно не указывать:

1
2
3
Другой текст/код
[DOCNAME]<CD_GRAN_1!>.txt[/DOCNAME]
Другой текст/код

У макроса [DOCNAME] есть набор параметров, которые прописываются внутри его:

1
2
3
Другой текст/код
[DOCNAME][CLEAR][TRANSLITE][NOFOLDER][UNIQUE]<CD_GRAN_1!>.txt[/DOCNAME]
Другой текст/код

Где:
[CLEAR] – удалит все лишние символы и опустит регистр всех букв
[TRANSLITE] – преобразует русские буквы в транслит
[NOFOLDER] – не будет переименовывать папку и не создаст подпапки для сохранения файлов (даже если встретятся символы: \, /)
[UNIQUE] – при парсинге всех последующих WEB-документов всегда будет использоваться первое заданное имя файла (при повторном запуске процедуры парсинга, присваемое всем имя документа будет сброшено и снова взято из первого “сработавшего” [DOCNAME])




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

1
[DFN]папка\имя{ext}расширение[/DFN]

Этот макрос используется для задания имен файлов, которые загружаются на диск макросом шаблона вывода DOWNLOADFILE. Пропишите [DFN]имя[/DFN] в любое место шаблона вывода перед нужным макросом DOWNLOADFILE (можно прописывать перед каждым макросом DOWNLOADFILE несколько раз в документе). При парсинге макрос(ы) [DFN] будет(ут) удалятся из сохраняемых документов.

1
Другой текст/код [DFN]<CD_GRAN_2!>[/DFN]<DOWNLOADFILE>file url</DOWNLOADFILE> Другой текст/код

Где CD_GRAN_2! – граница парсинга с желаемым именем файла.


Если вы хотите раскладывать файлы по разным папкам, то задайте путь используя символ \

1
Другой текст/код [DFN]имя папки или <CD_GRAN_1!>\<CD_GRAN_2!>[/DFN]<DOWNLOADFILE>file url</DOWNLOADFILE> Другой текст/код

Где CD_GRAN_1! – желаемое имя папки для сохраняемых файлов, а CD_GRAN_2! – граница парсинга с именем файла.


Если вы хотите задать расширение, то используйте {ext}

1
Другой текст/код [DFN]<CD_GRAN_2!>{ext}jpg[/DFN]<DOWNLOADFILE>file url</DOWNLOADFILE> Другой текст/код

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


Если вы хотите, чтобы файлы с одинаковыми именами перезаписывались (а не создавались новые), то добавьте [REWRITE] в любое место макроса

1
Другой текст/код [DFN][CLEAR][TRANSLITE][NOFOLDER]<CD_GRAN_2!>{ext}jpg[REWRITE][/DFN]<DOWNLOADFILE>file url</DOWNLOADFILE> Другой текст/код

Где также:
[CLEAR] – удалит все лишние символы и опустит регистр всех букв
[TRANSLITE] – преобразует русские буквы в транслит
[NOFOLDER] – не будет переименовывать папку и не создаст подпапки для сохранения файлов (даже если встретятся символы: \, /)




Преобразование выбранного текста в одну строку (ONELINE)


До обработки:

1
2
3
4
5
6
7
8
9
10
11
[ONELINE:]Строка 1
Строка 2
Строка 3[/ONELINE]
 
[ONELINE:<br>]Строка 1
Строка 2
Строка 3[/ONELINE]
 
[ONELINE:-]Строка 1
Строка 2
Строка 3[/ONELINE]

После обработки:

1
2
3
4
5
Строка 1Строка 2Строка 3
 
Строка 1<br>Строка 2<br>Строка 3
 
Строка 1-Строка 2-Строка 3

Примечание: Если вам нужно заменить переносы строк на [CSVCS] или [CSVLB], прописывайте их в макросе как (CSVCS) и (CSVLB) соответственно!




Макрос поиск-замены ([REPLACE(что заменить|на что заменить)]…[/REPLACE])


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

1
2
3
4
[REPLACE(
1247|3333
<{skip}>|{skip}
)]<CD_GRAN_1!>[/REPLACE]

1247|3333 – Заменит все “1247” на “3333”
<{skip}>|{skip} – удалит все скобки тегов

Также параметры поиск-замены можно разделять не символом переноса строки, а макросом {break}

1
[REPLACE(1247|3333{break}<{skip}>|{skip})]<CD_GRAN_1!>[/REPLACE]

Подробнее о параметрах поиск-замены читаем тут.




[WEBASYSTIMG(разделитель)]image.jpg[/WEBASYSTIMG] (image.jpg,image_thm.jpg,image_enl.jpg)


На входе имеем:

1
[WEBASYSTIMG(,)]image.jpg[/WEBASYSTIMG]

На выходе получим:

1
image.jpg,image_thm.jpg,image_enl.jpg





Фильтрация документов по условию [DIGIFILTER]…[/DIGIFILTER]


Иногда требуется отсеять часть статей или товаров, числовой параметр которых не соответствует желаемому. Например, нужно отфильтровать товары, цена которых меньше, чем 800 рублей. Для таких целей можно использовать макрос шаблона вывода [DIGIFILTER].

Возможны три условия: число больше, меньше либо равно (>, <, =) [DIGIFILTER]x<100[/DIGIFILTER] [DIGIFILTER]x>5.7[/DIGIFILTER] [DIGIFILTER]x=777[/DIGIFILTER]

Где x-любая граница парсинга (любое число). В функции используются числа типа real (5, 5.5, 7.777). Если, допустим, x будет “цена 777 руб.”, то функция преобразует этот текст в число 777.0. Если x будет равно “.text5”, то функция преобразует текст в 0.5

При парсинге макрос [DIGIFILTER] будет удаляться!

При парсинге 1 документа макрос можно вызывать много раз. Например:

[DIGIFILTER]<CD_GRAN_1!><100[/DIGIFILTER][DIGIFILTER]<CD_GRAN_1!>>5.7[/DIGIFILTER][DIGIFILTER]<CD_GRAN_1!>=777[/DIGIFILTER][DIGIFILTER]<CD_GRAN_1!>=555[/DIGIFILTER][DIGIFILTER]<CD_GRAN_1!>=888[/DIGIFILTER]

В этом случае будут сохраняться все документы, <CD_GRAN_1!> которых будет меньше 100, больше 5.7, равен 777, 555 или 888.




Фильтрация строк по ключевым словам (удаление лишних строк, которые содержат или не содержат заданные ключевые слова)


Данная конструкция оставит в тексте "апельсин вкусный" и "оранжевый мандарин", так как "апельсин" и "мандарин" присутствуют в списке ключевых слов [KEYS]:

1
2
3
[STRINGSFILTER][KEYS]апельсин|мандарин[/KEYS]апельсин вкусный
оранжевый мандарин
банан[/STRINGSFILTER]

Данная конструкция удалит из текста "апельсин вкусный" и "оранжевый мандарин", так как "апельсин" и "мандарин" присутствуют в списке ключевых слов [KEYS] и в макросе присутствует параметр [DELETE]:

1
2
3
[STRINGSFILTER][DELETE][KEYS]апельсин|мандарин[/KEYS]апельсин вкусный
оранжевый мандарин
банан[/STRINGSFILTER]





Транслитизация русскоязычных символов (TOTRANSLITE)


До обработки:

1
[TOTRANSLITE:clear,regdown,convertspaces,clearspaces]  Тестовая строка Test string 1234567890 !@#$%^&*()  [/TOTRANSLITE]

После обработки:

1
testovaja_stroka_test_string_1234567890_^()

Описание параметров макроса:
– clear: удаление лишних символов типа ?&
– regdown: опускание регистра символов
– convertspaces2: преобразование пробелов в знак нижнего подчеркивания
– convertspaces: преобразование пробелов в знак дефиса
– clearspaces: удаление пробелов из начала и из конца строки




[COPY:от какого по счету символа копировать|сколько символов скопировать]текст[/COPY] (обрезка лишних символов текста (скопирует часть текста и вставит ее вместо макроса))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
До выполнения:
[COPY:1|2]12345678[/COPY]
После:
12
 
До выполнения:
[COPY:2|2]12345678[/COPY]
После:
23
 
До выполнения:
[COPY:2|3]12345678[/COPY]
После:
234
 
До выполнения:
[COPY:1|{LENGTH}]текст[/COPY]
После:
текст
 
До выполнения:
[COPY:1|{LENGTH}-1]текст[/COPY]
После:
текс
 
До выполнения:
[COPY:{LENGTH}-1|2]текст[/COPY]
После:
ст
 
До выполнения:
[COPY:{POS:A}|{LENGTH}]1A777[/COPY]
После:
A777
 
До выполнения:
[COPY:{POS:A}+1|{LENGTH}]1A777[/COPY]
После:
777
 
До выполнения:
[COPY:{POS:777}|{LENGTH}]12777[/COPY]
После:
777

{LENGTH} – числовое значение длины текста в пределах макроса COPY (в символах). Допускаются операции сложения и вычитания.
{POS:СИМВОЛ(Ы)} – числовая позиция от начала строки до указанных в POS символов (подстроки).


Также можно использовать операторы {HALF1} и {HALF2} (для получения первой или второй половины текста)

1
2
[COPY:{HALF1}]Текст[/COPY]
[COPY:{HALF2}]Текст[/COPY]



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

Для случаев, когда нужно указать фиксированную стартовую позицию (которая может быть меньше единицы или отрицательным числом), добавьте параметр {FIXEDSTART}

1
2
[COPY:{FIXEDSTART}-1|3]12345[/COPY]
В результате получим значение 1 (так как стартовая позиция -1 и копируется три существующих символа от этой позиции)





Макрос задания переменных и их многократного вывода в результат ([VAR])


Данный макрос разработан для задания переменных и их вставки в разные части документа (макросы, заданные как переменные и вставленные в документ несколько раз, будут выполнены только 1 раз). Например, вы парсите картинку и хотите вывести ее несколько раз в разных местах документа. Либо вы используете макрос случайного вывода текста {..|..}, и хотите вывести результат его работы в нескольких местах результирующего документа.

1
2
3
4
5
6
7
8
9
Задание переменных:
[VAR]
[SET:имя переменной 1]значение переменной 1[/SET]
[SET:имя переменной 2]значение переменной 2[/SET]
[/VAR]
 
Вывод заданных значений переменных:
[VAR:имя переменной 1] - вывод в результат "значение переменной 1"
[VAR:имя переменной 2] - вывод в результат "значение переменной 2"

Смотрите также:

– Вставка в каждый цикл повторяющихся границ парсинга нужных значений переменных, заданных (в другом месте) с помощью макроса [VAR]

– Вывод одних и тех же картинок в каждом цикле повторяющихся границ парсинга (с помощью макроса [VAR])




Замена умышленно-подмененных схожих по написанию символов английского/русского языка (a, c, e, o, p…) на оригинальные ([FIXLAYOUT])


FIX – исправить
LAYOUT – раскладка

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

Для правки такого рода текста (с подмененными буквами) в Content Downloader существует макрос [FIXLAYOUT]:

1
[FIXLAYOUT(язык)]текст для правки[/FIXLAYOUT]

В качестве параметра “язык” могут фигурировать выражения eng или rus (в зависимости от того, какой текст вы исправляете).

В окне предпросмотра парсинга контента вы можете нажать сочетание клавиш ctrl+e или ctrl+r для подсветки русских или английских символов в получившемся тексте. Это поможет выявить подмененные буквы.




Добавление URL-адреса в список ссылок при парсинге ([ADDURL])


Макрос шаблона вывода [ADDURL] применяется для пополнения списка ссылок при парсинге контента (ссылки будут добавляться в конец списка)

1
[ADDURL][ALLOWDUP][IGNORESAME]http://SBFactory.ru/?p=600[/FIRST_REPLACE][/ADDURL]

Параметр [ALLOWDUP] позволяет добавлять в список ссылок одну и ту же ссылку несколько раз (включает возможность добавления дублей).
Параметр [IGNORESAME] запрещает добавление в список ссылок ссылки, аналогичной (равной) той, с которой идет парсинг.

Параметры макроса [ADDURL] можно не указывать.

Примечание: Если вам нужно добавить ссылку, содержащую в себе [PARAM], экранируйте в ней этот оператор следующим образом -> {PARAM}.




Размножение строки с использованием в ней нарастающей переменной ([GENERATE])


При использовании такой конструкции:

1
[GENERATE][FROM]1[/FROM][TO]2[/TO][INC]1[/INC][SEP]{br}[/SEP]значение: [VARIABLE][/GENERATE]

Получим результат:

1
2
значение: 1
значение: 2

Описание параметров макроса:
[VARIABLE] – нарастающая с каждым циклом целочисленная переменная, которая вставляется в нужное место строки для генерации
[FROM] – начальное значение целочисленной переменной [VARIABLE] [TO] – конечное значение целочисленной переменной [VARIABLE] [INC] – инкремент переменной [VARIABLE] (на сколько будет увеличиваться с каждым циклом)
[SEP] – чем разделять циклы в результате работы макроса

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

1
[GENERATE][FROM]1[/FROM][TO]<CD_GRAN_2!>[/TO][INC]1[/INC][SEP]{br}[/SEP]<GETMORECONTENT><URL="WEB-адрес?page=[VARIABLE]"><START="<table><tr><td>"><STARTCOUNT="0"><END="</table>"><ENDCOUNT="0"><PARAMS=""></GETMORECONTENT>[/GENERATE]

Данная конструкция размножит макрос <GETMORECONTENT>. Обратите внимание на возможность использования значений границ парсинга в параметрах макроса [GENERATE]



Если вам нужно генерировать от и/или до дробного числа, добавляйте оператор {FLOAT} в параметры [FROM] и/или [TO].

Например, имеем:

1
[GENERATE][FROM]{FLOAT}1,1[/FROM][TO]3[/TO][INC]1[/INC][SEP]{br}[/SEP]значение: [VARIABLE][/GENERATE]

Получим:

1
2
3
значение: 1,1
значение: 2
значение: 3

Например, имеем:

1
[GENERATE][FROM]1,1[/FROM][TO]{FLOAT}3,3[/TO][INC]1[/INC][SEP]{br}[/SEP]значение: [VARIABLE][/GENERATE]

Получим:

1
2
3
значение: 2
значение: 3
значение: 3,3

Например, имеем:

1
[GENERATE][FROM]{FLOAT}1,1[/FROM][TO]{FLOAT}3,3[/TO][INC]1[/INC][SEP]{br}[/SEP]значение: [VARIABLE][/GENERATE]

Получим:

1
2
3
4
значение: 1,1
значение: 2
значение: 3
значение: 3,3



Как генерировать с использованием дробных чисел

Просто добавьте {REALMODE}k{/REALMODE} в любое место макроса [GENERATE]. Где k – количество символов после запятой при выводе результата. Если k=-1, то будет выводиться вся дробная часть с обрезанием лишних нулей.

Например, имеем:

1
[GENERATE]{REALMODE}1{/REALMODE}[FROM]1,1[/FROM][TO]1,8[/TO][INC]0,1[/INC][SEP]{br}[/SEP]значение: [VARIABLE][/GENERATE]

Получим:

1
2
3
4
5
6
7
8
значение: 1,1
значение: 1,2
значение: 1,3
значение: 1,4
значение: 1,5
значение: 1,6
значение: 1,7
значение: 1,8



Примечание: Внутри макроса [GENERATE] можно использовать макросы шаблона вывода: [MATH], [IF1].




Извлечение из HTML-кода URL-адресов с желаемыми анкорами (GETURLSBYANCHORS)


Макрос извлекает из HTML-кода желаемые адреса ссылок и построчно выводит их в результат (с возможностью вывода анкоров). С помощью макроса [GETURLSBYANCHORS] можно с легкостью парсить, например, URL-адреса страниц форм обратной связи с большого списка сайтов.

1
[GETURLSBYANCHORS(параметры)]HTML-код, содержащий теги a[/GETURLSBYANCHORS]

Параметры указываются построчно (либо разделяются комбинацией символов ||).
Если в качестве параметров указать символ *, то макрос извлечет все адреса ссылок из HTML-кода:

1
[GETURLSBYANCHORS(*)]HTML-код, содержащий теги a[/GETURLSBYANCHORS]

Если добавить [ADDANCHOR] в любое место параметров (добавляется один раз в независимости от количества введенных параметров):

1
[GETURLSBYANCHORS(*[ADDANCHOR])]HTML-код, содержащий теги a[/GETURLSBYANCHORS]

То в результате работы макроса к каждому URL будут добавлены их анкоры ссылок (URL||анкор).

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

1
[GETURLSBYANCHORS(*[ADDANCHOR][NODUP])]HTML-код, содержащий теги a[/GETURLSBYANCHORS]

Для исключения попадания в результат работы макроса ссылок на главные страницы сайтов, добавьте [NOMAINPAGE] в любое место параметров:

1
[GETURLSBYANCHORS(*[ADDANCHOR][NODUP][NOMAINPAGE])]HTML-код, содержащий теги a[/GETURLSBYANCHORS]

Если указать следующие параметры:

1
2
3
карта
адрес
[ADDANCHOR]

То в результате работы макроса вы можете получить:

1
2
http://...||карта сайта
http://...||адреса компании

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

Также в параметрах можно использовать регулярные выражения (http://sbfactory.ru/cd/?p=2332). Для этого добавьте re: в начало соответствующих параметров:

1
2
3
карта
re:регулярное выражение
адрес

Примечание: Для изменения модификаторов регулярных выражений (возможность включения регистронезависимого режима и прочее), пользуйтесь строкой модификаторов (ctrl+8 -> вкладка “RegExpr”). Например, чтобы включить регистронезависимый режим, используйте такую строку модификаторов: gsrimx.




Генерация уникальных ID товаров или статей при парсинге контента ([SKU_UNIQUE])







Вставка строк из файла на диске ([FILE]):

Читаем тут http://sbfactory.ru/cd/?p=2951




Получение максимального, минимального, среднего или случайного значения из ряда чисел ([GETVALUE])

1
2
3
4
5
6
7
8
[GETVALUE(тип действия|")]ряд чисел[/GETVALUE]
[GETVALUE(max|,)]100000 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 300000 (получение максимального значения, max)
[GETVALUE(min|;)]100000 рублей; 200000 рублей; 300000 рублей[/GETVALUE] - даст в результате 100000 (получение минимального значения, min)
[GETVALUE(average|,)]100000 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 200000 (получение среднего значения, округленного до целых, average)
[GETVALUE(average-1|,)]100001 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 200000,3 (получение среднего значения, округленного до десятых, average-1)
[GETVALUE(average-2|,)]100001 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 200000,33 (получение среднего значения, округленного до сотых, average-2)
[GETVALUE(average-3|,)]100001 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 200000,333 (получение среднего значения, округленного до тысячных, average-3)
[GETVALUE(random|,)]100000 рублей, 200000 рублей, 300000 рублей[/GETVALUE] - даст в результате 100000 или 200000 или 300000 (получение случайного значения из ряда чисел, random)

Для обозначения символа | в параметре “чем разделены числа” используйте оператор {sep}
Для обозначения символа переноса строки в параметре “чем разделены числа” используйте оператор {br} или {br2}


Для применения поиск-замены к каждому элементу ряда чисел (перед тем, как взять значение числа и для того, чтобы числа корректно брались из текста) используйте {PREREPLACE}правила поиск-замены{/PREREPLACE}

1
2
3
4
[GETVALUE(max|{br2})]{PREREPLACE}:{get}|{get}{/PREREPLACE}
Текст12: 1
Текст14: 2
Текст15: 3[/GETVALUE]

Правилом поиск-замены :{get}|{get} мы берем для определения числа из каждого элемента конечную часть (что стоит после двоеточия). После применения поиск-замены полученное число заносится в память для проведения дальнейших вычислений.


Для вывода в результате работы макроса не только числа, а полного текста элемента ряда чисел, добавьте параметр {TEXTOUT} таким образом

1
2
3
4
[GETVALUE(max|{br2}{TEXTOUT})]{PREREPLACE}:{get}|{get}{/PREREPLACE}
Текст12: 1
Текст14: 2
Текст15: 3[/GETVALUE]

В итоге мы получим не только максимальное число, а текст элемента (где содержится это максимальное число)

1
Текст15: 3





Получение редиректов ссылок (GETREDIRECT)


Например, есть ссылка, при открытии которой происходит редирект (перенаправление) на другой URL-адрес. Чтобы получить адрес, на который происходит перенаправление, используется макрос [GETREDIRECT].

1
2
3
4
5
6
7
8
9
1 [GETREDIRECT]http://SBFactory.ru/original[/GETREDIRECT]
2 [GETREDIRECT][LIB2]http://SBFactory.ru/original[/GETREDIRECT]
3 [GETREDIRECT][GRHEADERS]Host: sbfactory.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0[/GRHEADERS]http://SBFactory.ru/original[/GETREDIRECT]

Где параметр [LIB2] предназначен для включения альтернативной библиотеки для отправки запросов (рекомендуется использовать всегда).
Параметр [GRHEADERS] предназначен для отправки HTTP-заголовков (требуется на некоторых сайтах).

При парсинге на место макроса [GETREDIRECT] вставляется “редиректная ссылка” (куда было совершено перенаправление). Если, по какой-либо причине, запрос к ссылке не удался, на месте макроса остается оригинальная (исходная ссылка). При выполнении процедуры предпросмотра результатов парсинга контента, в случае с неудачным запросом к ссылке, в скобках отображается сообщение об ошибке.

Макрос работает с HTTP и HTTPS протоколами.

Примечание: Добавлена возможность использовать в макросе [GETREDIRECT] библиотеку WIN:

1
[GETREDIRECT][WINLIB]http://...[/GETREDIRECT]





Подсчет количества элементов текста, подсчет количества вхождений указанной подстроки в тексте (макросы [COUNTUP1] и [COUNTUP2])


Описание работы данных макросов есть на этой странице (клик)




Преобразование многострочных HTML-таблиц в двухстрочные (методом объединения данных первых нескольких рядов ячеек, кроме последнего, макрос [MERGETABLEROWS])


Описание работы данного макроса есть на этой странице (клик)




Получение данных ответа сервера (код ответа, cookie, редирект, макрос [GETRESPONSE])

1
[GETRESPONSE(какие данные получить и параметры)]ссылка[/GETRESPONSE]
1
2
[GETRESPONSE(HTTP_QUERY_RAW_HEADERS_CRLF)]ссылка[/GETRESPONSE]
[GETRESPONSE(HTTP_QUERY_LOCATION{redirect_off})]ссылка[/GETRESPONSE]

В качестве ссылки указывается любой URL-адрес для отправки запроса.

Параметры:
{redirect_off} – отключение автоматического редиректа для работы только с первым отправленным запросом

В качестве данных для получения указываются специальные операторы:
GET_COOKIE – получение установленных cookie
HTTP_QUERY_RAW_HEADERS_CRLF – вывод списка всех полученных данных
HTTP_QUERY_CONTENT_TYPE – тип получаемого контента
HTTP_QUERY_CONTENT_LENGTH – длина получаемого контента
HTTP_QUERY_STATUS_CODE – код статуса ответа сервера
HTTP_QUERY_STATUS_TEXT – текст статуса ответа сервера
HTTP_QUERY_SET_COOKIE – получение установленных cookie (лучше использовать оператор GET_COOKIE)
HTTP_QUERY_LOCATION – получение редиректной ссылки (должен быть добавлен параметр {redirect_off})

Полный список получаемых данных есть на этой странице




Добавление текстовых данных к началу или концу строк (или сегментов) обрабатываемого текста (макрос [ADDTEXT])


Макрос шаблона вывода [ADDTEXT] служит для добавления указанных данных к началу и/или концу сегментов текста. Сегментами являются части текста, разбитые указанным разделителем (например, перенос строк или запятая).

1
[ADDTEXT(что добавить в начало|что добавить в конец|разделитель сегментов текста)]текст для обработки[/ADDTEXT]

Для обозначения переносов строк в параметрах макроса используйте {br}, для обозначения символа вертикальной черты используйте {sep}.

1
2
3
4
5
6
7
8
9
10
11
Например, есть:
 
[ADDTEXT(Начало строки | конец строки.|{br})]строка 1
строка 2
строка 3[/ADDTEXT]
 
В результате получим:
 
Начало строки строка 1 конец строки.
Начало строки строка 2 конец строки.
Начало строки строка 3 конец строки.

Если нужно добавить текст только к определенным строкам, используйте параметры {must_have} и {must_not_have}. Эти параметры прописываются внутри макроса [ADDTEXT].

1
2
3
4
5
6
7
8
9
10
11
Например, есть:
 
[ADDTEXT(Начало строки | конец строки.|{br})]{must_have}2|3{/must_have}строка 1
строка 2
строка 3[/ADDTEXT]
 
В результате получим:
 
строка 1
Начало строки строка 2 конец строки.
Начало строки строка 3 конец строки.

Как видно из примера выше, текст был добавлен только к строкам, в которых есть 2 или 3 (перечисленные в параметре {must_have}). Параметр {must_not_have} имеет обратное действие. В нем перечисляются вхождения (через символ вертикальной черты), к строкам с которыми не будет добавляться текст.

1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 19, средний балл: 4.74)
Loading...
Автор: admin, 18 April 2011
Рубрики: Парсинг
Tags:
Есть 41 коммент. к сообщению: “Дополнительные макросы шаблона вывода”
  1. foto says:

    Еще бы добавить случайное перемешивание строк и цены бы не было данному софту

  2. Денис says:

    Возможно не туда пишу, хорошо бы из строки типа “http://ex.xom/15.html” получать наименование страницы, чтобы сформировать ссылку <a href = "”>[номер из ссылки()]

  3. Admin says:

    CD_DOCURL! засунуть в PHP_SCRIPT (http://sbfactory.ru/cd/?p=186) и вернуть из скрипта “номер из ссылки”.

  4. Admin says:

    Или, если есть возможность, парсить из кода страницы это заветное число.

  5. Андрей says:

    Можно ли сделать функцию назначения поля посредством нахождения определённых слов в границе парсинга.
    Допустим я хочу задать рубрику:
    Блюда из капусты
    Есть заданные поля парсинга где встречаются слова капуста” Тушёная капуста,Квашеная капуста,салат из капусты”
    Я вписываю ключевые слова: капуста,капустой,кавасить капусту
    Включаю опцию выводить Название по ключу и вписываю для вывода в шаблоне “Блюда из капусты”
    Как то так…

  6. Илья says:

    Нужно что типа SHAKESTRINGS, только чтобы перемешивал предложения внутри макроса. От точки до точки.
    Часто довольно большие тексты пишутся без переноса в одну строку 🙂
    Или выложите пхп скрипт для этого, ибо нуб 🙂 написать не могу

  7. nikolas1612 says:

    можно ли создать еще один макрос –
    назовем его “МАКРОС ПОСЛЕДОВАТЕЛЬНОСТИ”. если в него поместить несколько границ – они вычисляются последовательно, и как только одна из них не пустая – все остальные пропускаются.
    это позволило бы очень гибко управлять границами парсинга и прочти полностью исключить возможные сбои.

    • admin says:

      Здравствуйте!
      Это уже давно есть: на панели инструментов “дополнительные настройки границ парсинга”. Там в каждой вкладке есть “если граница парсинга окажется пустой, то заместо нее будет выводится следующий текст” туда добавить макрос следующей (из вашей последовательности) границы парсинга, например: <CD_GRAN_2!>.
      Если потребуется, во вкладку макроса <CD_GRAN_2!> (в тех же дополнительных настройках границ парсинга) вставьте макрос <CD_GRAN_3!> и так далее.
      В результате: если граница парсинга 1 окажется пустой, то будет выведена граница парсинга 2 (<CD_GRAN_2!>), если граница парсинга 2 окажется пустой, то будет выведена <CD_GRAN_3!> и так далее.
      Успехов!

      • nikolas1612 says:

        не работает 🙁
        обычный текст выводит на ура, макрос же просто игнорируется.

        • nikolas1612 says:

          разобрался сам. описанную схему убивает функция “htm to txt”, которая расценивает обозначение макроса как обычный тег и удаляет его.
          схема жизнеспособна только в случае отключения этой функции, либо отдельного прописывания в списке исключаемых тегов всех макросов границ, задействованых в последовательности.

  8. Леха says:

    на сайте номер телефона скрыт под JavaScript вот что получается в тексте:

    Включите JavaScript для просмотра информации

    как обойти такую ситуацию?

  9. azat says:

    Макрос WEBASYSTIMG лучше “разделитель” по умолчанию поставить не “;”, а просто “,”

  10. azat says:

    Да чуть не забыл, спасибо за макрос.

  11. admin says:

    Пожалуйста.

    Content Downloader версии 30.70 (10.02.2012) (Обновление по просьбе человека):

    – Доработан макрос шаблона вывода WEBASYSTIMG (http://sbfactory.ru/cd/?p=261).

  12. Mark says:

    Здравствуйте.
    Есть проблема при парсинге повторяющихся границ на одной странице!!! Если отсутствует один из элементов парсинга напр. телефон или емейл, то в конечной выдаче используя все смещается. Это реально проблема, если полей больше чем 50. Или я что то не заметил?

  13. Нурлан says:

    Здравствуйте!

    Хотел спарсить данные сразу БД.
    В одном столбце нумерация начинается с 1. Ставлю макрос [INT_ID].
    А второй столбец должен начинаться с 0. как можно реализовать?
    Выше написано: “Стартовое значение макроса можно указать в его настройках (в окне «редактор шаблона вывода» на панели инструментов: кнопка «дополнительные макросы шаблона вывода» — «[INT_ID]» — «настроить макрос»)”
    Покажите пожалуйста на скриншотах, что-где нужно писать.

  14. Александр says:

    как сделать чтоб на сайте загружалась статья с картинками с другого сайта не скачивая её оттуда?

  15. Ирина says:

    Здравствуйте. Подскажите, пожалуйста, есть ли макрос, отвечающий за подсчёт количества символов в тексте границы парсинга и вывод этого числа в шаблоне?

  16. Александр says:

    Макрос [SYN][/SYN] выдает только первый синоним, удалил пробелы, заглавные буквы, получил строку в data.txt: transom,вариант1,вариант2,вариант3,вариант4,вариант5
    в настройках повторяющихся границ: [SYN][VALUE][/SYN]
    получаю: вариант1 вариант1 вариант1 …..
    Что не так ? оч. надо…
    Спасибо

  17. Andrey says:

    хорошее описание, но некоторые примеры совсем непонятны для человека, только начинающего знакомство с софтом.
    текст написан исходя из того, что читатель уже имеет хорошее представление о работе программы, а откуда его взять, не прочитав таких текстов, замкнутый круг выходит.
    вот, например:
    в [HTMTOTXT:][/HTMTOTXT]
    предлагается пример
    [HTMTOTXT:a,br,p]текст, в котором надо удалить теги[/HTMTOTXT]
    в шаблонах вывода никакой текст не пишется, там пишутся только тэги, границы, макросы.
    откуда же тут берется “текст, в котором надо удалить теги” неясно. то есть надо вручную какой-то текст вырезать из браузера и вставлять в шаблон вывода?
    тогда в чем вообще смысл программы, которая сама должна парсить тексты?

    некоторые примеры такого вида непонятны и соответственно непонятно как конкретно использовать макрос.

    в целом же описание очень хорошее, повторюсь, речь только об отдельных непонятных примерах.

  18. proger says:

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

  19. Sergey says:

    2proger , к сожалению Вы далеко не “продвинутый” пользователь, раз для вас данные макросы с примерами не понятны… идите курите форум, а потом в макросы лезьте…

  20. kreol2013 says:

    моделирование ситуации И (когда условия 2 и больше)
    [REPLACE(00|1{break}01|2{break}10|3{break}11|4)][IF1][CHARCOUNT][/CHARCOUNT]>0[THEN]1[ELSE]0[/IF1][IF1][CHARCOUNT][/CHARCOUNT]>0[THEN]1[ELSE]0[/IF1][/REPLACE]
    1= 0 И 0
    2= 0 И 1
    3= 1 И 0
    4= 1 И 1

  21. Света says:

    Добрый день!
    У Вас все чудесно написано “для умных”, для тех, кто “не очень”, укажите, пожалуйста, куда и как вставить этот макрос?
    [IMAGESNAMES]имя[/IMAGESNAMES] (задать имена файлов загружаемых изображений):

  22. Света says:

    Нужно чтобы на выходе было image1 и т.д. с сохранением нумерации 2,3,4 и т.д.
    Спасибо!

  23. Света says:

    Тут все умные… помогите! Разобралась как переименовать изображение, но у меня нумерация идет через пробел image_1, а мне нужно банально image1 и т.д. Это можно сделать?….

  24. Пётр says:

    Добрый день!
    А можно задать имя_файлов_сохраняемых_документов по названию_проекта.cdp?
    На выходе должен получится файл – название_проекта.csv
    Спасибо!

    • admin says:

      Здравствуйте!

      Только если в шаблон вывода (ctrl+2) добавить [DOCNAME]желаемое имя.csv[/DOCNAME]

      С уважением к вам, Сергей.

  25. Артем says:

    Добрый день. Подскажите, а можно каким-то образом получить ссылку на страницу, с которой была собрана ссылка на текущую страницу? Конкретный пример: в интернет-магазине нет breadcrumbs, а необходимо разбить товар по группам. Для этого нужно получить ссылку на страницу с группой для каждого товара. Надеюсь, понятно объяснил.

    • admin says:

      Здравствуйте.

      Такого функционала сейчас нет. Но, думаю, можно найти альтернативное решение для большинства подобных сайтов. Пожалуйста, создайте соответствующую тему на форуме http://forum.sbfactory.ru/ (с указанием адреса сайта) и мы вам постараемся помочь.

      Спасибо!

  26. Сергей says:

    Здравствуйте
    Есть сайт с множеством товаров – без характеристик товаров на странице товара, но на этом сайте множество разных товарных категорий (рубрик) где 1 и тот же товар (с одинаковым SKU) встречается по несколько раз. В принципе нужно использовать части эти рубрик для создания характеристик товара, дабы не парсить весь этот ненужный огород и облегчить жизнь.
    Хотелось бы спросить – как можно из всех разных рубрик в которых есть данный товар получить разные характеристики товаров, при этом исключив дубли товаров добавляя лишь разные характеристики к 1му товару с 1м sku

    Прошу прощения что не понятно объяснил, надеюсь что поняли

    • admin says:

      Здравствуйте.

      На данный момент такого функционала в программе не имеется. По срокам реализации этого, простите, я сейчас сказать ничего не могу.

      С уважением к вам, Сергей.

  27. Сергей says:

    тогда еще вопрос – есть ли функция массива условий
    Например есть спасенное значение цены, мне нужно:

    1. если цена меньше 50, то умноржение на 4
    2. если цена от 51 до 100, то умножение на 3
    3. если неца от 101 до 1000, то умножение на 2
    4. если цена от 1001 до 3000, то умножение на 1,5
    6. если цена от 3001 до ~? то умножение на 1,3

    И т.п.

    • admin says:

      Здравствуйте.

      Простите за долгий ответ.

      Такие манипуляции с ценами, думаю, лучше реализовать на подключаемом PHP-скрипте с локального или WEB-сервера.

      http://sbfactory.ru/cd/?p=2104

      Если с этим совсем все “туго” -> обращайтесь на форум, поможем готовым решением.

      С уважением к вам, Сергей.

  28. Руслан says:

    Не работает Replace внутри DFN
    Например,
    [DFN][REPLACE(Модель № : |FM)][/REPLACE][/DFN]

    Или я что то ни так делаю?

    • admin says:

      Здравствуйте.

      Совместно с макросом [DFN] используйте макрос поиск-замены [FIRST_REPLACE]

      [DFN][FIRST_REPLACE(Модель № : |FM)][/FIRST_REPLACE][/DFN]

      В будущем смотрите лог выполнения функций (в нижней части окна предпросмотра парсинга контента).

      С уважением к вам, Сергей.

  29. denis says:

    Здравствуйте.
    После просмотра видео выше Исключение парсинга дублей возникает вопрос – нет такой возможности “прикрутить” к макросу текстовый файл в котором будет список слов, ссылок при нахождение которых данный пост НЕ парсится, имею ввиду даже в описании (тоесть где символов больше 500)?

    • admin says:

      Здравствуйте.

      Используйте для этого функцию фильтрации документов по списку ключевиков (shift+ctrl+f). Туда можно будет ввести список слов.

      Если нужна именно подгрузка списка слов из файла, сообщите об этом тут http://sbfactory.ru/?p=1301 и возможно мы добавим такую возможность.

      С уважением к вам, Сергей.

  30. denis says:

    для данного фильтра не слишком много 100-120 (стоп-слов)? и ещё никак не найду – вроде раньше был макрос для автоматического перевода текста (яндекс переводчиком), или ошибаюсь?

Написать комментарий

Последние статьи

css.php