Pular para o conteúdo principal

Filtros de resultados

No A-Parser existe a possibilidade de filtrar resultados por um conjunto de regras específicas e salvar no resultado apenas os dados necessários.

Uso da filtragem

Principais casos de uso:

  • Salvar apenas os links que contêm uma determinada ocorrência de string (por exemplo, um sinal de CMS)
  • Filtrar uma base de domínios por parâmetros específicos (por exemplo, Yandex IKS a partir de 300, idioma RU)
  • Verificar a resposta do servidor (por exemplo, 200 OK ou a presença de determinados cabeçalhos)
  • Verificar a presença do consulta original no snippet
  • Quaisquer outros casos de uso onde seja necessário limitar os resultados por condições específicas

Os filtros podem ser adicionados no Editor de Tarefas, clicando no ícone de ferramenta ao lado do scraper necessário:

Opção Filtro no Editor de Tarefas

Tipos de filtragem

É possível filtrar tanto resultados individuais quanto arrays de resultados. Existem vários tipos de filtros:

  • Por igualdade ou desigualdade de strings
  • Por presença ou ausência de uma substring
  • Por correspondência ou não correspondência a uma expressão regular
  • Valores numéricos podem ser filtrados por maior, menor e igualdade

Características de funcionamento

  • Ao filtrar arrays de resultados, permanecem no array apenas os resultados que atendem ao filtro
  • Ao filtrar resultados simples, se o resultado não atender ao filtro, o resultado para esta consulta é totalmente descartado, inclusive ao usar múltiplos scrapers
  • Ao usar dois ou mais filtros em uma tarefa, aplica-se o operador lógico E entre eles; em outras palavras, o resultado será salvo se atender às condições de todos os filtros simultaneamente
  • Ao comparar no campo de especificação de valor (string, expressão regular ou valor numérico), é possível usar o mecanismo de modelos Template Toolkit, estando disponíveis todas as variáveis análogas ao Formato geral de resultados

Exemplos

Filtragem por texto na página

Verificação de uma base de sites para encontrar um texto específico na página
Como consultas, usamos um arquivo com links; como resultado, obtemos um arquivo filtrado com os links onde o texto pesquisado foi encontrado.

Usamos o scraper Net::HTTPNet::HTTP para baixar a página desejada, como resultado salvamos a consulta (o link que estamos verificando). Filtramos o resultado $data - conteúdo da página baixada, definimos o tipo de filtro Contain string e indicamos a própria string:

Exemplo de filtragem por texto na página

Filtragem de imagens por tamanho

Filtragem de imagens por resolução
Filtramos a altura e a largura da imagem durante a extração de dados via SE::Google::ImagesSE::Google::Images, salvando apenas as imagens que são maiores que 500x500 pixels:

Exemplo de filtragem de imagens por tamanho

Filtragem por múltiplos critérios

Filtragem de links pela ocorrência de qualquer uma de várias strings diferentes
Para filtrar links por várias strings diferentes, utilizaremos a possibilidade de especificar expressões regulares, escrevendo vários critérios através de um delimitador:

showthread\.php
/forum/
viewtopic\.php\?t=
nota

Observe que as expressões regulares exigem o escape de uma série de caracteres

Exemplo de filtragem por vários critérios

Uso da consulta no filtro

Salvando snippets do Google que contêm a consulta original
Como string para comparação, indicamos explicitamente [% query %] - a variável que contém a consulta, e selecionamos Sensitive para buscar a substring respeitando a caixa dos caracteres:

Exemplo de uso de consulta no filtro