Configuration via l'interface
A-Parser permet de définir la configuration dans un style déclaratif, ainsi que d'utiliser l'interface pour créer et éditer des préréglages sans avoir besoin de modifier le code source des scrapers.
static defaultConf
static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};
Configuration du scraper par défaut, le config sera disponible dans l'objet de la classe via la propriété this.conf, les champs suivants sont obligatoires :
results- décrit dans un style déclaratif les résultats que ce scraper peut retournerresults_format- définit le format de résultat par défaut
Tous les autres champs sont optionnels, il existe la liste suivante de paramètres qui affectent le fonctionnement du scraper :
| Nom du paramètre | Type | Description (valeur par défaut) |
|---|---|---|
| timeout | number | Temps d'attente maximum de la requête en secondes (60) |
| useproxy | boolean / 0 / 1 | Détermine s'il faut utiliser un proxy (1) |
| max_size | number | Taille maximale du fichier de résultat (1 * 1024 * 1024) |
| proxyretries | number | Nombre de tentatives pour chaque requête, si la requête ne peut pas être effectuée dans le nombre de tentatives indiqué, elle est considérée comme échouée et ignorée (10) |
| requestdelay | number / string | Délai entre les requêtes en secondes (0). Il est également possible de définir une valeur aléatoire dans un intervalle, par exemple 10,30 - délai de 10 à 30 secondes |
| proxybannedcleanup | number | Temps de bannissement du proxy en secondes (600) |
| pagecount | number | Nombre de pages à collecter (1) |
| parsecodes | { [code: string]: any } | Valeur des codes de réponse pour les requêtes qui seront considérées comme réussies (any) |
| queryformat | string | Format de la requête ($query) |
Vous pouvez également définir des champs personnalisés qui peuvent être modifiés via l'interface
static editableConf
Ce paramètre définit la liste des champs de configuration qui peuvent être modifiés via l'interface. Il existe les types de champs suivants dans l'interface :
textfield- champ pour la saisie libre de valeurs numériques et de chaînes de caractèrescheckbox- case à cocher avec les états activé/désactivécombobox- liste déroulante avec choix d'une ou plusieurs valeurs- la sélection de plusieurs valeurs est définie via l'option
{ multiSelect: 1 }
editableConf est un tableau dont chaque élément décrit le champ de configuration correspondant :
static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Exemple de déclaration de champs éditables :
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;
}

Veuillez noter que dans cet exemple, une méthode getter est utilisée pour editableConf, ce qui permet d'effectuer un traitement supplémentaire, par exemple la génération d'une liste de pages. Pour des cas plus simples, vous pouvez définir des propriétés statiques de classe, de la même manière que pour defaultConf
static parserOptions
parserOptions est une alternative pour définir les paramètres, la liste des options s'affiche comme des éléments supplémentaires dans le menu contextuel du scraper
La déclaration des options fonctionne de manière analogue à editableConf :
static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Exemple de déclaration de champs supplémentaires :
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]]
],
];
