Configuratie via de interface
Met A-Parser kunt u de configuratie in een declaratieve stijl definiëren en de interface gebruiken om presets te maken en te bewerken zonder de broncode van de scrapers te hoeven wijzigen
static defaultConf
static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};
Standaardconfiguratie van de scraper, de config zal beschikbaar zijn in het klasse-object via de eigenschap this.conf, de volgende velden zijn verplicht:
results- beschrijft in declaratieve stijl de resultaten die deze scraper kan retournerenresults_format- stelt het standaard resultaatformaat in
Alle andere velden zijn optioneel, er is de volgende lijst met parameters die de werking van de scraper beïnvloeden:
| Parameternaam | Type | Beschrijving (standaardwaarde) |
|---|---|---|
| timeout | number | Maximale wachttijd voor aanvraag in seconden (60) |
| useproxy | boolean / 0 / 1 | Bepaalt of proxy's moeten worden gebruikt (1) |
| max_size | number | Maximale grootte van het resultaatbestand (1 * 1024 * 1024) |
| proxyretries | number | Aantal pogingen per aanvraag; als de aanvraag niet binnen het opgegeven aantal pogingen kan worden uitgevoerd, wordt deze als mislukt beschouwd en overgeslagen (10) |
| requestdelay | number / string | Vertraging tussen aanvragen in seconden (0). Er kan ook een willekeurige waarde in een bereik worden opgegeven, bijvoorbeeld 10,30 - vertraging van 10 tot 30 seconden |
| proxybannedcleanup | number | Ban-tijd voor proxy in seconden (600) |
| pagecount | number | Aantal pagina's voor gegevensextractie (1) |
| parsecodes | { [code: string]: any } | Waarde van responscodes voor aanvragen die als succesvol worden beschouwd (any) |
| queryformat | string | Aanvraagformaat ($query) |
U kunt ook aangepaste velden definiëren die via de interface bewerkt kunnen worden
static editableConf
Deze instelling definieert een lijst met configuratievelden die via de interface kunnen worden bewerkt. Er zijn de volgende veldtypen in de interface:
textfield- veld voor vrije invoer van numerieke en tekstwaardencheckbox- vlag met de statussen aan/uitcombobox- dropdown met keuze uit één of meerdere waarden- selectie van meerdere waarden wordt ingesteld via de optie
{ multiSelect: 1 }
editableConf is een array waarvan elk element het bijbehorende configuratieveld beschrijft:
static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Voorbeeld van het declareren van bewerkbare velden:
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;
}

Let op, in dit voorbeeld wordt een getter-methode gebruikt voor editableConf, wat extra verwerking mogelijk maakt, zoals het genereren van een lijst met pagina's. Voor eenvoudigere gevallen kunt u statische klasse-eigenschappen definiëren, vergelijkbaar met defaultConf
static parserOptions
parserOptions is een alternatieve manier om instellingen op te geven; de lijst met opties wordt weergegeven als extra items in het contextmenu van de scraper
Het declareren van opties werkt op dezelfde manier als editableConf:
static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Voorbeeld van het declareren van extra velden:
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]]
],
];
