Форматирование запросов
Формат запроса - позволяет добавлять подстановки и форматировать запрос к нужному виду используя шаблоны, применяется для каждого запроса.
Форматы запросов
- Формат запроса для 1-го парсера
- Формат запроса для 2-го парсера
- Общий формат запросов
Существует 2 способа указать шаблон:
- Общий формат запросов, он обрабатывается первым и поддерживает подстановки
- Формат запроса для каждого парсера - позволяет задать специфичный формат для отдельных парсеров
Разберем пример на скриншоте, предположим что в качестве запросов мы используем файл со списком доменов такого вида:
google.com
a-parser.com
yandex.ru
Общий формат запроса задан в виде:
http://$query
Перед каждым исходным запросом (доменом) будет подставлена строка http://
, запрос будет преобразован google.com
-> http://google.com
Формат запроса для 1-го парсера остался неизменным, он будет парсить запрос http://google.com
Формат запроса для 2-го парсера выглядит следующим образом:
site:$query
Запрос для данного парсера будет преобразован: http://google.com
-> site:http://google.com
Шаблоны в запросах
В формате запроса полноценно поддерживается шаблонизатор Template Toolkit, в качестве переменных доступны:
$query
- запрос после форматирования через общий формат результата$query.num
- порядковый номер запроса$query.lvl
- уровень вложенности запроса при использовании опций Parse to level или Parse all results$query.orig
- исходный запрос до форматирования$query.first
- первый запрос при использовании опций Parse to level или Parse all results$query.prev
- показывает запрос который был на предыдущем уровне, работает для HTML::LinkExtractor, $tools.query.add и JS парсеров this.query.add- Все переменные, созданные через Конструктор запросов
Макросы подстановок
Общий формат запроса поддерживает следующие макросы:
Макрос | Описание | Примеры |
---|---|---|
{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) |
{num:END:START} | Макрос перебирает числа в указанном диапазоне в обратном порядке. Вместо END - указывается конец интервала, START указывает начало интервала. Поддерживаются дробные числа. | {num:1000:1} - подстановка всех чисел от 1000 до 1 (1000,999, 998, ..., 2, 1) |
{num:END:START:STEP} | Макрос перебирает числа в указанном диапазоне в обратном порядке, с указанным шагом. Вместо END - указывается конец интервала, START указывает начало интервала, вместо STEP - шаг. Поддерживаются дробные числа. | {num:1000:1:10} - подстановка всех чисел от 1000 до 1 с шагом 10 (1000,990, 980, ..., 10, 1) |
⏩ Видео: Макросы подстановок
В этом видео рассмотрено:
- макрос
{num}
на примерах прохода по страницам и перебора координат в парсере Maps::Google - макрос
{az}
на примере парсинга с inurl: для увеличения кол-ва запросов и соответственно результатов - макрос
{each}
на примере парсинга подсказок для генерации словосочетаний
Комбинирование макросов подстановок
Макросы подстановок можно комбинировать. Комплексный пример:
$query site:{subs:zones} {az:aa:zz}
Предположим один из запросов на парсинг был viagra, а в файле queries/subs/zones.txt
находится следующий список зон: com, net, org, тогда на парсинг поступит следующий набор комбинаций:
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
Общее число запросов будет соответствовать перемножению возможных комбинаций:
1 запрос (viagra) x 3 зоны ({subs:zones}) x 676 символьных вариаций ({az:aa:zz}) = 2028 запросов