Hoppa till huvudinnehåll

Konfiguration via gränssnittet

A-Parser tillåter att konfigurationen definieras i en deklarativ stil, samt att gränssnittet används för att skapa och redigera förinställningar utan att behöva modifiera scrapers källkod

static defaultConf

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

Standardkonfiguration för en scraper, konfigurationen kommer att vara tillgänglig i klassobjektet via egenskapen this.conf, följande fält är obligatoriska:

  • results - beskriver i deklarativ stil de resultat som denna scraper kan returnera

  • results_format - anger standardformatet för resultatet

Alla andra fält är valfria, det finns följande lista över parametrar som påverkar scraperns arbete:

ParameternamnTypBeskrivning (standardvärde)
timeoutnumberMaximal väntetid för begäran i sekunder (60)
useproxyboolean / 0 / 1Avgör om proxy ska användas (1)
max_sizenumberMaximal storlek på resultatfilen (1 * 1024 * 1024)
proxyretriesnumberAntal försök för varje begäran; om begäran inte kan utföras inom det angivna antalet försök anses den misslyckad och hoppas över (10)
requestdelaynumber / stringFördröjning mellan förfrågningar i sekunder (0). Det går även att ange ett slumpmässigt värde i ett intervall, till exempel 10,30 - fördröjning från 10 till 30 sekunder
proxybannedcleanupnumberTid för proxy-ban i sekunder (600)
pagecountnumberAntal sidor för dataskrapning (1)
parsecodes{ [code: string]: any }Värde för svarskoder för förfrågningar som ska anses vara framgångsrika (any)
queryformatstringFrågeformat ($query)
anteckning

Du kan också definiera godtyckliga fält som kan redigeras via gränssnittet

static editableConf

Denna inställning definierar en lista över konfigurationsfält som kan redigeras via gränssnittet. Det finns följande typer av fält i gränssnittet:

  • textfield - fält för godtycklig inmatning av numeriska värden och strängvärden
  • checkbox - flagga med tillstånden på/av
  • combobox - rullgardinsmeny med val av ett eller flera värden
  • val av flera värden ställs in via alternativet { multiSelect: 1 }

editableConf är en array där varje element beskriver ett motsvarande konfigurationsfält:

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

Exempel på deklaration av redigerbara fält:

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;
}
Skärmdump av gränssnittet med inställningarna ovan
anteckning

Observera att i detta exempel används en getter-metod för editableConf, vilket möjliggör ytterligare bearbetning, till exempel generering av en sidlista. För enklare fall kan du definiera statiska egenskaper för klassen, på samma sätt som för defaultConf

static parserOptions

parserOptions är ett alternativt sätt att definiera inställningar, listan över alternativ visas som ytterligare punkter i scraperns kontextmeny

Deklaration av alternativ fungerar på samma sätt som editableConf:

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

Exempel på deklaration av ytterligare fält:

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]]
],
];
Skärmdump av gränssnittet med inställningarna ovan