Pular para o conteúdo principal

Configuração através da interface

O A-Parser permite definir a configuração em um estilo declarativo, bem como utilizar a interface para criar e editar predefinições sem a necessidade de modificar o código-fonte dos scrapers

static defaultConf

static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};

Configuração padrão do scraper, o config estará disponível no objeto da classe através da propriedade this.conf, os seguintes campos são obrigatórios:

  • results - descreve em estilo declarativo os resultados que este scraper pode retornar

  • results_format - define o formato de resultado padrão

Todos os outros campos são opcionais, existe a seguinte lista de parâmetros que afetam o funcionamento do scraper:

Nome do parâmetroTipoDescrição (valor padrão)
timeoutnumberTempo máximo de espera da requisição em segundos (60)
useproxyboolean / 0 / 1Define se deve usar proxy (1)
max_sizenumberTamanho máximo do arquivo de resultado (1 * 1024 * 1024)
proxyretriesnumberNúmero de tentativas para cada requisição; se a requisição não puder ser concluída no número especificado de tentativas, ela será considerada malsucedida e ignorada (10)
requestdelaynumber / stringAtraso entre requisições em segundos (0). Também é possível definir um valor aleatório em um intervalo, por exemplo 10,30 - atraso de 10 a 30 segundos
proxybannedcleanupnumberTempo de banimento do proxy em segundos (600)
pagecountnumberNúmero de páginas para extração de dados (1)
parsecodes{ [code: string]: any }Valor dos códigos de resposta para requisições que serão consideradas bem-sucedidas (any)
queryformatstringFormato da consulta ($query)
nota

Você também pode definir campos arbitrários que podem estar disponíveis para edição através da interface

static editableConf

Esta configuração define a lista de campos de configuração que podem ser editados através da interface. Existem os seguintes tipos de campos na interface:

  • textfield - campo para entrada arbitrária de valores numéricos e strings
  • checkbox - flag com estados ligado/desligado
  • combobox - dropdown com seleção de um ou mais valores
  • a seleção de múltiplos valores é definida através da opção { multiSelect: 1 }

editableConf representa um array, onde cada elemento descreve o campo de configuração correspondente:

static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Exemplo de declaração de campos editáveis:

static get editableConf() {
let editableConf: typeof BaseParser.editableConf = [
['device',
['combobox', 'Device',
['desktop', 'Modern desktop computer (Windows 10, Chrome 84)'],
['mobile', 'Mobile device (iPhone X, iOS 11)']
]
],
['pagecount', ['combobox', 'Pages count']],
['linksperpage',
['combobox', 'Links per page',
[10, '10'],
[20, '20'],
[30, '30'],
[50, '50']
]
],
];

for (let page = 1; page <= 25; page++)
editableConf[1][1].push([page, page]);

return editableConf;
}
Captura de tela da interface com as configurações acima
nota

Observe que, neste exemplo, foi utilizado um método getter para editableConf, o que permite realizar processamento adicional, como a geração de uma lista de páginas. Para casos mais simples, você pode definir propriedades estáticas da classe, de forma análoga ao defaultConf

static parserOptions

parserOptions é uma alternativa para definir configurações; a lista de opções é exibida como itens adicionais no menu de contexto do scraper

A declaração das opções funciona de forma análoga ao editableConf:

static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Exemplo de declaração de campos adicionais:

static parserOptions: typeof BaseParser.parserOptions = [
['parseAll', 'Parse all results',
['checkbox', 'Parse all results']
],
['parseLevel', 'Parse related to level',
['combobox', 'Parse Related to level', [1, 1], [2, 2], [3, 3]]
],
];
Captura de tela da interface com as configurações acima