Configuración a través de la interfaz
A-Parser permite definir la configuración en un estilo declarativo, así como utilizar la interfaz para crear y editar ajustes preestablecidos sin necesidad de modificar el código fuente de los extractores.
static defaultConf
static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};
Configuración del extractor por defecto, el config estará disponible en el objeto de la clase a través de la propiedad this.conf, los siguientes campos son obligatorios:
results- describe en estilo declarativo los resultados que puede devolver este extractorresults_format- establece el formato de resultado por defecto
Todos los demás campos son opcionales, existe la siguiente lista de parámetros que influyen en el funcionamiento del extractor:
| Nombre del parámetro | Tipo | Descripción (valor por defecto) |
|---|---|---|
| timeout | number | Tiempo máximo de espera de la solicitud en segundos (60) |
| useproxy | boolean / 0 / 1 | Determina si se debe usar proxy (1) |
| max_size | number | Tamaño máximo del archivo de resultado (1 * 1024 * 1024) |
| proxyretries | number | Número de intentos para cada solicitud; si la solicitud no se puede completar en el número de intentos especificado, se considera fallida y se omite (10) |
| requestdelay | number / string | Retraso entre solicitudes en segundos (0). También se puede establecer un valor aleatorio en un intervalo, por ejemplo 10,30 - retraso de 10 a 30 segundos |
| proxybannedcleanup | number | Tiempo de baneo del proxy en segundos (600) |
| pagecount | number | Número de páginas de extracción de datos (1) |
| parsecodes | { [code: string]: any } | Valor de los códigos de respuesta para las solicitudes que se considerarán exitosas (any) |
| queryformat | string | Formato de la consulta ($query) |
También puede definir campos arbitrarios que pueden estar disponibles para su edición a través de la interfaz.
static editableConf
Esta configuración establece la lista de campos de configuración que pueden ser editados a través de la interfaz. Existen los siguientes tipos de campos en la interfaz:
textfield- campo para la entrada arbitraria de valores numéricos y de cadenacheckbox- bandera con estados activado/desactivadocombobox- menú desplegable con selección de uno o varios valores- la selección de varios valores se establece a través de la opción
{ multiSelect: 1 }
editableConf representa un array, cada elemento del cual describe el campo de configuración correspondiente:
static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Ejemplo de declaración de campos editables:
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;
}

Tenga en cuenta que en este ejemplo se utiliza un método getter para editableConf, lo que permite realizar un procesamiento adicional, por ejemplo, la generación de una lista de páginas. Para casos más sencillos, puede definir propiedades estáticas de la clase, de forma similar a defaultConf
static parserOptions
parserOptions es una opción alternativa para establecer configuraciones; la lista de opciones se muestra como elementos adicionales en el menú contextual del extractor.
La declaración de opciones funciona de manera similar a editableConf:
static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Ejemplo de declaración de campos adicionales:
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]]
],
];
