Граница - или-или, замена и очистка в ctrl+4

Тема в разделе "Границы парсинга", создана пользователем kolalakolala, 6 дек 2016.

  1. kolalakolala

    kolalakolala New Member Пользователи

    Регистрация:
    6 дек 2016
    Сообщения:
    58
    Добрый день.

    Вроде бы простая задача, а не получается решить. Мануал исковырял весь - решения не нашел.

    Подскажите плз. Есть вот такой код - таких кодов может быть большое количество, это для примера
    <title>dressy tops for plus size women, - Tbdress.com</title>
    <title>dressy tops for plus size women | Page 5 - Tbdress.com</title>
    <title>dressy tops for plus size women ; Page 5 - Tbdress.com</title>

    Основная граница <title></title>.
    Но мне нужно, взять таким образом:

    <title> здесь оставить до "," или до "|"? или до ";", а если ничего такого нет, то до </title>
     
  2. napserious

    napserious Well-Known Member Пользователи Активирован

    Регистрация:
    16 окт 2015
    Сообщения:
    324
    Добрый день,
    Используйте макрос ALTERNATE.
    Untitled.png
     
    kolalakolala нравится это.
  3. napserious

    napserious Well-Known Member Пользователи Активирован

    Регистрация:
    16 окт 2015
    Сообщения:
    324
    Еще можно использовать Поиск|Замену.
    Untitled.png
    Только оно не работает с Title в котором есть символ "|" так как это разделить поиск замены...
     
    Последнее редактирование: 6 дек 2016
    kolalakolala нравится это.
  4. napserious

    napserious Well-Known Member Пользователи Активирован

    Регистрация:
    16 окт 2015
    Сообщения:
    324
    На данный момент есть одно решение для ващей проблемы:
    В конец добавить {skip}|{skip}</title>[ALTERNATE]0[/ALTERNATECOUNT]</title>
    И в поиск замена для границы парсинга title добавить:
    Код:
    [ONERULE]
    {skip},{skip}|{skip(1)}
    {skip};{skip}|{skip(1)}
    [/ONERULE]
    В данном случае:
    1) Мы проверяем если в тайтле есть | тогда обрежаем до него текст.
    2) Если в тайтле нету | тогда обрежаем до </title>
    3) Если обрезали до </title> из второго пункта но в тексте будет , или ; тогда мы обрежем до этих символов , или ;
    Если я не хорошо обьяснил, можете приложить проект где есть пару ссылок со всеми примерами и я его отредактирую за вас :)
     
  5. kolalakolala

    kolalakolala New Member Пользователи

    Регистрация:
    6 дек 2016
    Сообщения:
    58
    С поиском-заменой пытался, но была проблема именно с "|"
    На самом деле этот символ очень часто присутствует в тайтлах и в основном за ним идёт никому не нужный текст. Вот его я и хочу убрать. Нужно убрать из тайтлов всё что после (|) (,) (-) :))

    Макрос ALTERNATE не совсем понятен или не подходит.

    Насколько я понял он делает альтернативу или "|" или "</title>".

    Если прописать так: </title>[ALTERNATE]0[/ALTERNATECOUNT]| - то он возьмёт до </title> и в случае его отсутствия возьмёт до "|"
    Если прописать так: |[ALTERNATE]0[/ALTERNATECOUNT]</title> - то он возьмёт до "|" и в случае его отсутствия до </title>. Но тут проблема - всё равно в коде хоть раз да встретися "|", но уже не в пределах тайтла. Как быть подскажите. Очень нужно
     
  6. kolalakolala

    kolalakolala New Member Пользователи

    Регистрация:
    6 дек 2016
    Сообщения:
    58
    сори пока писал, Вы уже ответили - сейчас попробую
     
    napserious нравится это.
  7. kolalakolala

    kolalakolala New Member Пользователи

    Регистрация:
    6 дек 2016
    Сообщения:
    58
    не получается. Проект во вложении.
    Обратите внимание по ссылкам 1 и 2 не получается.

    Интересует момент только с | - дальше всё просто.
     

    Вложения:

    • title.cdp
      Размер файла:
      34 КБ
      Просмотров:
      2
  8. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    палочка | в заменzемом указывается как {sep}
    вам гораздо проще будет как подсказали ранее - это границей зацепить начало <title> и конец границы </title>
    Далее в доп.настройке границ ctrl+4 используйте список замен которые вы перечислили, учтите что срабатывает по приоритету от первого и потом ниже.
    Код:
    ,{skip}|
    ?{skip}|
    ;{skip}|
    {sep}{skip}|
    
     
    Root, napserious и kolalakolala нравится это.
  9. kolalakolala

    kolalakolala New Member Пользователи

    Регистрация:
    6 дек 2016
    Сообщения:
    58
    спасибо, работает:)
     
  10. Alexei82

    Alexei82 New Member Пользователи

    Регистрация:
    22 фев 2017
    Сообщения:
    19
    столкнулся с похожей ситуацией
    начало границ задано как

    Код:
    <li class="first" >{br}                        {br}                            <span class="">[ALTERNATE]0[/ALTERNATECOUNT]<title>
    конец границ
    Код:
    </span>[ALTERNATE]0[/ALTERNATECOUNT]<
    делаю для того чтобы, если нет спан класса первого, то взять из тайтла,
    но столкнулся что альтернативную начало границ определяет правильно, а вот конец альтернативы упрямо ищет основную </span> (где-то аж в конце страницы хватает его) и даже не хватает знака <

    баг или я что-то упускаю?
     
  11. Alexei82

    Alexei82 New Member Пользователи

    Регистрация:
    22 фев 2017
    Сообщения:
    19
    все, кажись догнал.... конец границ нужно делать в обратном порядке ?

    сначала альтернативы а потом основная конец?
     
  12. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Альтернативный вариант границы парсинга используется только в случае, если основной вариант не найден. У вас находит </span> соответственно, альтернативный вариант искать нет необходимости.

    В вашем случае нужно задать две разных границы парсинга и выводить вторую, если первая не найдена:
    2017-02-24_14-45-28.png
     
  13. Alexei82

    Alexei82 New Member Пользователи

    Регистрация:
    22 фев 2017
    Сообщения:
    19
    Сергей, спасибо.
    Возможно и ваш вариант тоже подойдет, но я решил это с [ALTERNATE]
    нужно прописывать в границах конца парсинга начиная с [ALTERNATE], если поставил [ALTERNATE] в начальных границах, и заканчивать концами основной границей - у меня сработало как нужно!

    зы: смысл обработки - как обработка html тегов вышло! сначала открываем теги а потом закрываем в обратном порядке...
     
    Root нравится это.

Поделиться этой страницей