Formatação de consultas
Query format (Formato de consulta) - permite adicionar substituições e formatar a consulta para a forma desejada usando modelos, aplicado a cada consulta.
Formatos de consultas

- Formato de consulta para o 1º scraper
- Formato de consulta para o 2º scraper
- Formato de consulta geral
Existem 2 maneiras de especificar um modelo:
- Formato de consulta geral, ele é processado primeiro e suporta substituições
- Formato de consulta para cada scraper - permite definir um formato específico para scrapers individuais
Vamos analisar o exemplo na captura de tela, supondo que como consultas usamos um arquivo com uma lista de domínios deste tipo:
google.com
a-parser.com
yandex.ru
O formato de consulta geral é definido como:
http://$query
Antes de cada consulta original (domínio), será prefixada a string http://, a consulta será convertida de google.com -> http://google.com
O formato de consulta para o 1º scraper permaneceu inalterado, ele fará a extração de dados da consulta http://google.com
O formato de consulta para o 2º scraper é o seguinte:
site:$query
A consulta para este scraper será convertida: http://google.com -> site:http://google.com
Modelos em consultas
No formato de consulta, o mecanismo de modelos Template Toolkit é totalmente suportado, as seguintes variáveis estão disponíveis:
$query- consulta após a formatação através do formato de resultado geral$query.num- número sequencial da consulta$query.lvl- nível de aninhamento da consulta ao usar as opções Parse to level ou Parse all results$query.orig- consulta original antes da formatação$query.first- primeira consulta ao usar as opções Parse to level ou Parse all results$query.prev- mostra a consulta que estava no nível anterior, funciona para
HTML::LinkExtractor, $tools.query.add e scrapers JS this.query.add- Todas as variáveis criadas através do Construtor de consultas
Macros de substituição
O Formato de consulta geral suporta as seguintes macros:
| Macro | Descrição | Exemplos |
|---|---|---|
| {az:START:END} | Substituição de uma sequência alfanumérica. Em vez de START, indica-se o início da sequência, em vez de END - o fim. O comprimento de END deve ser maior ou igual ao comprimento de START. Os caracteres no final da sequência END devem vir depois (em ordem alfabética) dos caracteres no início da sequência START. Pode-se usar qualquer sequência de caracteres UTF-8 | {az:a:z} - substituição de todos os caracteres de a a z (a, b, c, ..., x, z). {az:aaa:zzz} - substituição de todos os caracteres de aaa a zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - substituição de todos os caracteres de a a zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - substituição de todos os números de 00 a 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - substituição de todos os caracteres cirílicos de а a яяя (а, б, ... аа, аб, ... яяю, яяя) |
| {each:WORD1,WORD2,...} | Substituição das palavras especificadas WORD1, WORD2, etc., comprimento ilimitado | {each:green,blue,red,black} - substituição das palavras green, blue, red, black. {each:,buy,sell} - substituição de uma palavra vazia, depois buy e sell |
| {subs:NAME} | Substituição de palavras adicionais de arquivos na pasta queries/subs/. Em vez de NAME, é necessário indicar o nome do arquivo, sem a extensão .txt | {subs:zones} - substituição de todas as linhas do arquivo queries/subs/zones.txt |
| {num:START:END} | A macro itera sobre números no intervalo especificado. Em vez de START, indica-se o início do intervalo, em vez de END - o fim. Números fracionários são suportados. | {num:1:1000} - substituição de todos os números de 1 a 1000 (1, 2, 3 ..., 999, 1000) |
| {num:START:END:STEP} | A macro itera sobre números no intervalo especificado, com o passo indicado. Em vez de START, indica-se o início do intervalo, em vez de END - o fim, em vez de STEP - o passo. Números fracionários são suportados. | {num:0:1000:10} - substituição de todos os números de 0 a 1000 com passo 10 (0, 10, 20 ..., 990, 1000) |
| {num:END:START} | A macro itera sobre números no intervalo especificado em ordem inversa. Em vez de END - indica-se o fim do intervalo, START indica o início do intervalo. Números fracionários são suportados. | {num:1000:1} - substituição de todos os números de 1000 a 1 (1000, 999, 998, ..., 2, 1) |
| {num:END:START:STEP} | A macro itera sobre números no intervalo especificado em ordem inversa, com o passo indicado. Em vez de END - indica-se o fim do intervalo, START indica o início do intervalo, em vez de STEP - o passo. Números fracionários são suportados. | {num:1000:1:10} - substituição de todos os números de 1000 a 1 com passo 10 (1000, 990, 980, ..., 10, 1) |
⏩ Vídeo: Macros de substituição
Neste vídeo é abordado:
- macro
{num}em exemplos de navegação por páginas e iteração de coordenadas no scraper
Maps::Google - macro
{az}no exemplo de extração de dados com inurl: para aumentar o número de consultas e, consequentemente, de resultados - macro
{each}no exemplo de extração de dados de sugestões para geração de frases
Combinando macros de substituição
As macros de substituição podem ser combinadas. Exemplo complexo:
$query site:{subs:zones} {az:aa:zz}
Suponha que uma das consultas para extração de dados foi viagra, e no arquivo queries/subs/zones.txt está a seguinte lista de zonas: com, net, org, então o seguinte conjunto de combinações será enviado para extração de dados:
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
O número total de consultas corresponderá à multiplicação das combinações possíveis:
1 consulta (viagra) x 3 zonas ({subs:zones}) x 676 variações de caracteres ({az:aa:zz}) = 2028 consultas