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