Result filter

  • Автор темы Автор темы Advice
  • Дата начала Дата начала

Advice

A-Parser Pro License
A-Parser Pro
Здравствуйте, вопрос по поводу result filter, что делаю не так?
72443c49017a3f77932a8cc5a5847087.png

На входе идет файл с доменами(site.com), на выходе хочу получать только те ссылки в выдаче, где в сниппетах фигурирует домен(для этого делаю Remove HTML tags у сниппетов, т.к. изначально в сниппетах было что-то вроде site<b>.com</b>), если смотрю вручную - всё есть, но с данными настройками в файл не сохраняет вообще ничего.

P.S. почему при наличии сайтов для парсинга прокси сам проксичекер не подгружает прокси из файла proxy.txt, а только с сайтов?
 
Последнее редактирование:
Добрый день.
  1. Переменную в фильтре нужно указывать явно (используя [% ... %]). Пример есть тут.
  2. Фильтр срабатывает до Конструктора результатов, поэтому удаление тегов в данном случае не поможет. Подробнее о порядке обработки запросов: https://a-parser.com/wiki/query-results-relation/
В данном случае лучше реализовать фильтрацию шаблонизатором. Для этого в Общем формате результата нужно прописать шаблон, который в цикле переберет каждый результат и выведет только те, где есть совпадение. Примерно так:
Код:
[% FOREACH item IN p1.serp;
    regex = '(?i)' _ query.orig.replace('([\-\[\]/{}()*+?.\\\^$|])', '\\\$1'); #создаем регулярку из оригинального запроса, экранируем зарезервированные символы и добавляем игнорирование регистра
    IF item.snippet.match(regex);
        item.link _ "\n";
    END;
END %]
 
А разве мы не можем тогда сделать фильтр по регулярке, смысл ведь тот же?Только проблема в том, что html теги то не удалятся, в итоге домен может быть в сниппетах как в явном виде(site.com), так и с html тегами(<b>site</b>.com site<b>.com</b> и т.д.). Или же шаблонизатор будет отбирать строки уже ПОСЛЕ удаления html кода?
 
Врятли получится сделать такую регулярку, которая бы учитывала все комбинации тегов и запроса. Поэтому проще шаблонизатором сделать.

Формат результата (а значит и шаблон в нем) применяется после Конструктора результатов, поэтому в нем строки уже будут без HTML тегов (если Конструктором результатов вы их убираете).
 
Спасибо, всё работает, однако есть одно но, почему-то пропускает около 18 ссылок на фоне общих 400+, пробовал и изменять ваш код таким образом:
Код:
[% FOREACH item IN p1.serp;
   IF item.snippet.match(query.orig);
       item.link _ "\n";
   END;
END %]
Результат один в один, но при обычном проходе результатов больше и непонятно почему он пропускает, потому что сниппеты там вполне обычные, вот один из них(которые пропустило):
http://site.com - key 1kw9al.
Делал несколько проходов, через шаблонизатор 428 ссылок собирает, обычными проходами получается около 496(но там еще с доменами в самом url'e, а не только сниппетах, в итоге если вычесть те, где в url'e домен встречается, а в сниппетах - нет, то получается разница около 18 доменов). В чем может быть проблема?

upd: Проблема решена, всё дело оказалось в дублях, ведь при сохранении со сниппетами домены могут быть одинаковые, теперь всё сходится.
 
Последнее редактирование:
Немного неправильно использовать не измененный запрос в качестве регулярки.
В примере кода выше я показывал как экранировать зарезервированные символы, и также добавить игнорирование регистра.

А в целом сложно ответить на ваш вопрос, не видя конкретного пресета, запросов и результатов.
 
Назад
Верх