Vai al contenuto principale

Configurazione tramite interfaccia

A-Parser consente di definire la configurazione in stile dichiarativo, oltre a utilizzare l'interfaccia per creare e modificare i preset senza dover modificare il codice sorgente degli scraper.

static defaultConf

static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};

Configurazione dello scraper predefinita, il config sarà accessibile nell'oggetto della classe tramite la proprietà this.conf, i seguenti campi sono obbligatori:

  • results - descrive in stile dichiarativo i risultati che questo scraper può restituire

  • results_format - imposta il formato del risultato predefinito

Tutti gli altri campi sono opzionali, esiste il seguente elenco di parametri che influenzano il funzionamento dello scraper:

Nome parametroTipoDescrizione (valore predefinito)
timeoutnumberTempo massimo di attesa della richiesta in secondi (60)
useproxyboolean / 0 / 1Definisce se utilizzare i proxy (1)
max_sizenumberDimensione massima del file del risultato (1 * 1024 * 1024)
proxyretriesnumberNumero di tentativi per ogni richiesta; se la richiesta non viene completata entro il numero di tentativi specificato, viene considerata fallita e saltata (10)
requestdelaynumber / stringRitardo tra le richieste in secondi (0). È anche possibile impostare un valore casuale in un intervallo, ad esempio 10,30 - ritardo da 10 a 30 secondi
proxybannedcleanupnumberTempo di ban del proxy in secondi (600)
pagecountnumberNumero di pagine di scraping (1)
parsecodes{ [code: string]: any }Valore dei codici di risposta per le richieste che saranno considerate riuscite (any)
queryformatstringFormato della query ($query)
nota

È inoltre possibile definire campi personalizzati che possono essere modificabili tramite l'interfaccia

static editableConf

Questa impostazione definisce l'elenco dei campi di configurazione che possono essere modificati tramite l'interfaccia. Esistono i seguenti tipi di campi nell'interfaccia:

  • textfield - campo per l'inserimento libero di valori numerici e stringhe
  • checkbox - flag con stati attivato/disattivato
  • combobox - menu a discesa con scelta di uno o più valori
  • la selezione di più valori si imposta tramite l'opzione { multiSelect: 1 }

editableConf è un array in cui ogni elemento descrive il corrispondente campo di configurazione:

static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Esempio di dichiarazione di campi modificabili:

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 dell'interfaccia con le impostazioni sopra indicate
nota

Nota: in questo esempio viene utilizzato un metodo getter per editableConf, il che consente di eseguire elaborazioni aggiuntive, come la generazione dell'elenco delle pagine. Per casi più semplici, è possibile definire proprietà statiche della classe, analogamente a quanto fatto per defaultConf

static parserOptions

parserOptions è un'opzione alternativa per definire le impostazioni; l'elenco delle opzioni viene visualizzato come voci aggiuntive nel menu contestuale dello scraper

La dichiarazione delle opzioni funziona in modo analogo a editableConf:

static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Esempio di dichiarazione di campi aggiuntivi:

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 dell'interfaccia con le impostazioni sopra indicate