Pular para o conteúdo principal

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

Exemplo de formatos de consultas
  1. Formato de consulta para o 1º scraper
  2. Formato de consulta para o 2º scraper
  3. 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:

Macros de substituição

O Formato de consulta geral suporta as seguintes macros:

MacroDescriçãoExemplos
{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::GoogleMaps::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