Konfiguration über die Benutzeroberfläche
A-Parser ermöglicht es, die Konfiguration in einem deklarativen Stil festzulegen sowie das Interface zum Erstellen und Bearbeiten von Presets zu nutzen, ohne den Quellcode der Scraper modifizieren zu müssen
static defaultConf
static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};
Standardkonfiguration des Parsers; das Config-Objekt wird in der Klasseninstanz über die Eigenschaft this.conf verfügbar sein. Folgende Felder sind obligatorisch:
results- beschreibt im deklarativen Stil die Ergebnisse, die dieser Parser zurückgeben kannresults_format- legt das Standard-Ergebnisformat fest
Alle anderen Felder sind optional. Es gibt die folgende Liste von Parametern, die den Betrieb des Parsers beeinflussen:
| Parametername | Typ | Beschreibung (Standardwert) |
|---|---|---|
| timeout | number | Maximale Wartezeit für die Anfrage in Sekunden (60) |
| useproxy | boolean / 0 / 1 | Bestimmt, ob ein Proxy verwendet werden soll (1) |
| max_size | number | Maximale Größe der Ergebnisdatei (1 * 1024 * 1024) |
| proxyretries | number | Anzahl der Versuche pro Anfrage; wenn die Anfrage nicht innerhalb der angegebenen Anzahl von Versuchen ausgeführt werden kann, gilt sie als fehlgeschlagen und wird übersprungen (10) |
| requestdelay | number / string | Verzögerung zwischen Anfragen in Sekunden (0). Es kann auch ein Zufallswert in einem Bereich angegeben werden, zum Beispiel 10,30 - Verzögerung von 10 bis 30 Sekunden |
| proxybannedcleanup | number | Dauer der Proxy-Sperre (Ban) in Sekunden (600) |
| pagecount | number | Anzahl der zu scrapenden Seiten (1) |
| parsecodes | { [code: string]: any } | Werte der Antwortcodes für Anfragen, die als erfolgreich betrachtet werden (any) |
| queryformat | string | Anfrageformat ($query) |
Sie können auch beliebige Felder definieren, die über das Interface bearbeitet werden können
static editableConf
Diese Einstellung legt eine Liste von Konfigurationsfeldern fest, die über das Interface bearbeitet werden können. Es gibt folgende Feldtypen im Interface:
textfield- Feld für die freie Eingabe von numerischen Werten und Zeichenfolgencheckbox- Flag mit den Zuständen aktiviert/deaktiviertcombobox- Dropdown-Menü zur Auswahl eines oder mehrerer Werte- Die Auswahl mehrerer Werte wird über die Option
{ multiSelect: 1 }festgelegt
editableConf stellt ein Array dar, dessen jedes Element ein entsprechendes Konfigurationsfeld beschreibt:
static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Beispiel für die Deklaration bearbeitbarer Felder:
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;
}

Bitte beachten Sie, dass in diesem Beispiel eine Getter-Methode für editableConf verwendet wurde, was eine zusätzliche Verarbeitung ermöglicht, wie zum Beispiel die Generierung einer Seitenliste. Für einfachere Fälle können Sie statische Klasseneigenschaften definieren, analog zu defaultConf
static parserOptions
parserOptions ist eine alternative Möglichkeit zur Festlegung von Einstellungen; die Liste der Optionen wird als zusätzliche Punkte im Kontextmenü des Parsers angezeigt
Die Deklaration der Optionen funktioniert analog zu editableConf:
static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Beispiel für die Deklaration zusätzlicher Felder:
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]]
],
];
