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

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

В 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 %] - переменную которая содержит запрос, выбираем Учитывать регистр для поиска подстроки с учетом регистра символов:

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