Конец парсинга - два варианта

Тема в разделе "Границы парсинга", создана пользователем avenort, 17 авг 2018.

  1. avenort

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

    Регистрация:
    27 июл 2018
    Сообщения:
    4
    Город:
    Новосибирск
    Добрый день.
    При парсинге одной из границ возникла такая проблема, что конец парсинга отличается для разных товаров. Для некоторых товаров надо брать конец парсинга </strong>, для некоторых </p>, для некоторых <br />.
    Можно ли так задать конец парсинга, чтобы программа брала тот вариант, который раньше встретился? Или как это по-другому сделать?
    Мне нужна только первая строка из того, что попадает в границы. Можно ли оставить только первую строку, используя какой-то макрос?

    Заранее спасибо.
     
  2. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    867
    Можно задать альтернативную границу парсинга
    [​IMG]
     
    xLime нравится это.
  3. avenort

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

    Регистрация:
    27 июл 2018
    Сообщения:
    4
    Город:
    Новосибирск
    Здравствуйте. Спасибо за ответ.
    Не могу найти, как правильно задать эти альтернативные границы, в системе помощи не находится. При добавлении через это окно (ввожу границу и нажимаю "задать), получается такая строка в поле "конец парсинга": </p>[ALTERNATE]0[/ALTERNATECOUNT]</strong>[ALTERNATE]0[/ALTERNATECOUNT]<br />
    При этом программа не распознаёт альтернативные границы, только первую указанную границу.
    Что надо изменить?
     
  4. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    867
    Все верно. Будет браться первая граница парсинга и в случае, если первая граница НЕ НАЙДЕНА будет браться альтернативная граница.
    Как вариант, проводить поиск и замену кода страницы до ее обработки.
     
    Kreol нравится это.
  5. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    313
    Или возьмите конец границы парсинга "</" Тогда программа будет брать первый закрывающий тег как конечную границу парсинга.
     
  6. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    313
    Или спарсите все тело исходного кода, в поиск замене замените теги переноса строк (</p>, <br />) на </strong> например и тут же в поиск замене парсите нужную вам часть
     
    avenort и Kreol нравится это.
  7. avenort

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

    Регистрация:
    27 июл 2018
    Сообщения:
    4
    Город:
    Новосибирск
    Спасибо, такой вариант сделала, получилось.
    У меня снова аналогичная проблема, нужно спарсить название товара до слова "купить" или "оптом".
    Граница (конец парсинга) задана как "купить[ALTERNATE]0[/ALTERNATECOUNT]оптом".
    Но слово "оптом" не воспринимается как граница, парсится куча кода, так как потом есть слово "купить".

    Я могу задать конец парсинга как </title>, но мне тогда надо отрезать лишний текст начиная со слова "купить" или со слова "оптом", есть такой макрос?
     
  8. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Не то что можете, обязаны просто!
    отрезать конец текста простым replace
    Код:
    [REPLACE(купить{skip}|{break}оптом{skip}|)]<CD_GRAN_1!>[/REPLACE]
     
    Inweb и xLime нравится это.
  9. avenort

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

    Регистрация:
    27 июл 2018
    Сообщения:
    4
    Город:
    Новосибирск
    Спасибо, все получилось.
     
    Kreol нравится это.

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