Ir al contenido principal

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 extractor

  • results_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ámetroTipoDescripción (valor por defecto)
timeoutnumberTiempo máximo de espera de la solicitud en segundos (60)
useproxyboolean / 0 / 1Determina si se debe usar proxy (1)
max_sizenumberTamaño máximo del archivo de resultado (1 * 1024 * 1024)
proxyretriesnumberNú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)
requestdelaynumber / stringRetraso 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
proxybannedcleanupnumberTiempo de baneo del proxy en segundos (600)
pagecountnumberNú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)
queryformatstringFormato de la consulta ($query)
nota

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 cadena
  • checkbox - bandera con estados activado/desactivado
  • combobox - 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;
}
Captura de pantalla de la interfaz con los ajustes anteriores
nota

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]]
],
];
Captura de pantalla de la interfaz con los ajustes anteriores