1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 400+ и мы растем!
    Скрыть объявление

Вопрос про снипеты

Тема в разделе "Делимся опытом", создана пользователем Dmitron, 24 апр 2018.

  1. Dmitron

    Dmitron A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 май 2017
    Сообщения:
    65
    Симпатии:
    6
    Добрый день!
    Паршу снипеты бинга, всего их собирается штук 30, а мне надо только 3 рандомных предложения из этой кучи текста. Может подсказать как отфильтровать?
     
  2. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.493
    Симпатии:
    1.564
    Добрый день.
    Это легко решается с помощью шаблонизатора:
    • объединяем все сниппеты в одну строку
    • из нее парсим регулярным выражением предложения
    • рандомно берем нужное кол-во предложений и выводим, удаляя выведенные предложения из массива, чтобы исключить повторы
    Код:
    [% sentences = p1.serp.format('$snippet. ').match('([A-BА-Я][^.!?]{30,}(?:[.!?]|$))', 1);
    USE Math;
    FOREACH i IN [1..3];
        sentences.splice(Math.int(Math.rand(sentences.size)), 1).0 _ "\n";
    END %]
    [​IMG]
     
    fancy27, relay, Zlodeys и ещё 1-му нравится это.
  3. shmell

    shmell A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    20 май 2015
    Сообщения:
    22
    Симпатии:
    7
    А как тут же сделать
    • объединяем все сниппеты в одну строку
    • из нее парсим регулярным выражением предложения
    • выводим все, исключая повторы
    У меня всегда полчуается ARRAY(0x119115a0) :(
    Спасибо.
     
  4. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.493
    Симпатии:
    1.564
    Просто выведите массив, например, через .join:
    Код:
    sentences.join("\n");
    Повторы удалять нужно уникализацией по строке.
     
    shmell нравится это.

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