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 retornarresults_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âmetro | Tipo | Descrição (valor padrão) |
|---|---|---|
| timeout | number | Tempo máximo de espera da requisição em segundos (60) |
| useproxy | boolean / 0 / 1 | Define se deve usar proxy (1) |
| max_size | number | Tamanho máximo do arquivo de resultado (1 * 1024 * 1024) |
| proxyretries | number | Nú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) |
| requestdelay | number / string | Atraso 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 |
| proxybannedcleanup | number | Tempo de banimento do proxy em segundos (600) |
| pagecount | number | Nú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) |
| queryformat | string | Formato da consulta ($query) |
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 stringscheckbox- flag com estados ligado/desligadocombobox- 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;
}

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]]
],
];
