Здравствуйте, вопрос по поводу result filter, что делаю не так? На входе идет файл с доменами(site.com), на выходе хочу получать только те ссылки в выдаче, где в сниппетах фигурирует домен(для этого делаю Remove HTML tags у сниппетов, т.к. изначально в сниппетах было что-то вроде site<b>.com</b>), если смотрю вручную - всё есть, но с данными настройками в файл не сохраняет вообще ничего. P.S. почему при наличии сайтов для парсинга прокси сам проксичекер не подгружает прокси из файла proxy.txt, а только с сайтов?
Добрый день. Переменную в фильтре нужно указывать явно (используя [% ... %]). Пример есть тут. Фильтр срабатывает до Конструктора результатов, поэтому удаление тегов в данном случае не поможет. Подробнее о порядке обработки запросов: 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: Проблема решена, всё дело оказалось в дублях, ведь при сохранении со сниппетами домены могут быть одинаковые, теперь всё сходится.
Немного неправильно использовать не измененный запрос в качестве регулярки. В примере кода выше я показывал как экранировать зарезервированные символы, и также добавить игнорирование регистра. А в целом сложно ответить на ваш вопрос, не видя конкретного пресета, запросов и результатов.