Ga naar de hoofdinhoud

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 retourneren

  • results_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:

ParameternaamTypeBeschrijving (standaardwaarde)
timeoutnumberMaximale wachttijd voor aanvraag in seconden (60)
useproxyboolean / 0 / 1Bepaalt of proxy's moeten worden gebruikt (1)
max_sizenumberMaximale grootte van het resultaatbestand (1 * 1024 * 1024)
proxyretriesnumberAantal pogingen per aanvraag; als de aanvraag niet binnen het opgegeven aantal pogingen kan worden uitgevoerd, wordt deze als mislukt beschouwd en overgeslagen (10)
requestdelaynumber / stringVertraging 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
proxybannedcleanupnumberBan-tijd voor proxy in seconden (600)
pagecountnumberAantal pagina's voor gegevensextractie (1)
parsecodes{ [code: string]: any }Waarde van responscodes voor aanvragen die als succesvol worden beschouwd (any)
queryformatstringAanvraagformaat ($query)
opmerking

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 tekstwaarden
  • checkbox - vlag met de statussen aan/uit
  • combobox - 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;
}
Screenshot van de interface met de bovenstaande instellingen
opmerking

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]]
],
];
Screenshot van de interface met de bovenstaande instellingen