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

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

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

  1. Dmitron

    Dmitron A-Parser Enterprise License
    A-Parser Enterprise

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

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.575
    Симпатии:
    2.170
    Добрый день.
    Это легко решается с помощью шаблонизатора:
    • объединяем все сниппеты в одну строку
    • из нее парсим регулярным выражением предложения
    • рандомно берем нужное кол-во предложений и выводим, удаляя выведенные предложения из массива, чтобы исключить повторы
    Код:
    [% 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
    Сообщения:
    27
    Симпатии:
    8
    А как тут же сделать
    • объединяем все сниппеты в одну строку
    • из нее парсим регулярным выражением предложения
    • выводим все, исключая повторы
    У меня всегда полчуается ARRAY(0x119115a0) :(
    Спасибо.
     
  4. Support

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

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

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