Форматирование и подстановки запросов

8 дек 2015


  • Формат запроса - позволяет добавлять подстановки и форматировать запрос к нужному виду используя шаблоны, применяется для каждого запроса

    [​IMG]

    Существует 2 способа указать шаблон:
    • Общий формат запросов, он обрабатывается первым и поддерживает подстановки
    • Формат запроса для каждого парсера - позволяет задать специфичный формат для отдельных парсеров
    Разберем пример на скриншоте, предположим что в качестве запросов мы используем файл со списком доменов такого вида:

    Общий формат запроса задан в виде
    Перед каждым исходным запросом(доменом) будет подставлена строка http://, запрос будет преобразован google.com -> http://google.com

    Формат запроса для парсера 1 остался неизменным, парсер 1 будет парсить запрос http://google.comФормат запроса для парсера 2 выглядит следующим образом:
    Запрос для данного парсера будет преобразован: http://google.com -> site:http://google.com

    Шаблоны в запросах(top)



    В формате запроса полноценно поддерживается Шаблонизатор Template Toolkit, в качестве переменных доступны:
    • $query - запрос после форматирования через общий формат результата
    • $query.num - порядковый номер запроса
    • $query.lvl - уровень вложенности запроса при использовании опций Parse to level или Parse all results
    • $query.orig - исходный запрос до форматирования
    • $query.first - первый запрос при использовании опций Parse to level или Parse all results
    • Все переменные, созданные через Конструктор запросов

    Макросы подстановок(top)


    Общий формат запроса поддерживает следующие макросы:
    МакросОписаниеПримеры
    {az:START:END}Подстановка цифро-символьной последовательности
    Вместо START указывается начало последовательности, вместо END - конец
    Длина END должна быть больше или равна длине START
    Символы в конце последовательности END должны быть после(в алфавитном порядке) символов в начале последовательности START
    Можно использовать любые UTF-8 последовательности символов

    {az:a:z} - подстановка всех символов от a до z(a, b, c, ..., x, z)
    {az:aaa:zzz} - подстановка всех символов от aaa до zzz(aaa, aab, aac, ..., zzx, zzz)
    {az:a:zz} - подстановка всех символов от a до zz(a, b, c, ... aa, ab, ..., zx, zz)
    {az:00:99} - подстановка всех чисел от 00 до 99(00, 01, 02, ..., 98, 99)
    {az:а:яяя} - подстановка всех кирилических символов от а до яяя(а, б, ... аа, аб, ... яяю, яяя)
    {each:WORD1,WORD2,...}Подстановка указанных слов WORD1, WORD2 и т.д., длина не ограничена{each:green,blue,red,black} - подстановка слов green, blue, red, black
    {each:,buy,sell} - подстановка пустого слова, затем buy и sell
    {subs:NAME}Подстановка дополнительных слов из файлов в папке queries/subs/
    Вместо NAME необходимо указать имя файла, без расширения .txt
    {subs:zones} - подстановка всех строк из файла queries/subs/zones.txt
    {num:START:END}Макрос перебирает числа в указанном диапазоне. Вместо START указывается начало интервала, вместо END - конец{num:1:1000} - подстановка всех чисел от 1 до 1000(1, 2, 3 ..., 999, 1000)
    {num:START:END:STEP}Макрос перебирает числа в указанном диапазоне, с указанным шагом. Вместо START указывается начало интервала, вместо END - конец, вместо STEP - шаг{num:0:1000:10} - подстановка всех чисел от 0 до 1000 с шагом 10 (0, 10, 20 ..., 990, 1000)


    Макросы подстановок можно комбинировать, комплексный пример:
    Предположим один из запрос на парсинг был viagra, в файле queries/subs/zones.txt находится следующий список зон: com, net, org, тогда на парсинг поступит следующий набор комбинаций:

    Общее число запросов будет соответствовать перемножению возможных комбинаций:1 запрос(viagra) x 3 зоны({subs:zones}) x 676 символьных вариаций({az:aa:zz}) = 2028 запросов
vipuncle, List и high_skill нравится это.