Перейти к основному содержимому

Фильтры результатов

В A-Parser'е существует возможность фильтровать результаты по набору определенных правил и сохранять в результат только необходимые данные.

Использование фильтрации​

Основные варианты применения:

  • Сохранение только тех ссылок, которые содержат определенное вхождение строки (например признак CMS)
  • Фильтрация базы доменов по определенным параметрам (например Яндекс ИКС от 300, язык RU)
  • Проверка ответа от сервера (например 200 OK или содержание определенных заголовков)
  • Проверка нахождения в сниппете исходного запроса
  • Любые другие варианты применения где требуется ограничить результаты по определенным условиям

Фильтры можно добавить в Редакторе заданий, кликнув по иконке с инструментом напротив необходимого парсера:

Опция Фильтр в Редакторе заданий

Типы фильтрации​

Фильтровать можно как одиночные результаты, так и массивы результатов. Существует несколько типов фильтров:

  • По равности или неравности строк
  • По вхождению или отсутствию вхождения подстроки
  • По соответствию или не соответствию регулярному выражению
  • Числовые значения можно фильтровать по больше, меньше и равенству
подсказка

Особенности работы​

  • При фильтровании массивов результатов, в массиве остаются результаты только подпадающие под фильтр
  • При фильтровании простых результатов, если результат не подпадает под фильтр, то результат для данного запроса целиком пропускается, в т.ч. при использовании нескольких парсеров
  • При использовании двух и более фильтров в задании между ними применяется логическое И, другими словами результат сохранится если будет подпадать под условия всех фильтров одновременно
  • При сравнении в поле указания значения (строки, регулярного выражения или числового значения) можно использовать шаблонизатор Template Toolkit, доступны все переменные аналогичные для Общего формата результатов

Примеры​

Фильтрация по тексту на странице​

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

Используем парсер Net::HTTPNet::HTTP для скачивания искомой страницы, в результат сохраняем запрос (ссылку которую проверяем). Фильтруем результат $data - контент скачанной страницы, выставляем тип фильтра Содержит строку и указываем саму строку:

Пример фильтрации по тексту на странице

Фильтрация картинок по размеру​

Фильтрация картинок по разрешению
Фильтруем высоту и ширину картинки при парсинге через SE::Google::ImagesSE::Google::Images, сохраняем только те картинки которые больше 500х500 пикселей:

Пример фильтрации картинок по размеру

Фильтрация по нескольким признакам​

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

showthread\.php
/forum/
viewtopic\.php\?t=
примечание

Обратите внимание что регулярные выражения требуют экранировать ряд символов

Пример фильтрации картинок по размеру

Использование запроса в фильтре​

Сохранение сниппетов Google в которых содержится исходный запрос
В качестве строки для сравнения явно указываем [% query %] - переменную которая содержит запрос, выбираем Учитывать регистр для поиска подстроки с учетом регистра символов:

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