Przejdź do treści głównej

Konfiguracja przez interfejs

A-Parser pozwala na definiowanie konfiguracji w stylu deklaratywnym, a także na korzystanie z interfejsu do tworzenia i edycji presetów bez konieczności modyfikacji kodu źródłowego scraperów

static defaultConf

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

Domyślna konfiguracja scrapera, konfiguracja będzie dostępna w obiekcie klasy poprzez właściwość this.conf, następujące pola są obowiązkowe:

  • results - opisuje w stylu deklaratywnym wyniki, które może zwracać dany scraper

  • results_format - określa domyślny format wyniku

Wszystkie pozostałe pola są opcjonalne, istnieje następująca lista parametrów, które wpływają na działanie scrapera:

Nazwa parametruTypOpis (wartość domyślna)
timeoutnumberMaksymalny czas oczekiwania na zapytanie w sekundach (60)
useproxyboolean / 0 / 1Określa, czy używać proxy (1)
max_sizenumberMaksymalny rozmiar pliku wyniku (1 * 1024 * 1024)
proxyretriesnumberLiczba prób dla każdego zapytania; jeśli zapytanie nie zostanie wykonane w określonej liczbie prób, jest uważane za nieudane i pomijane (10)
requestdelaynumber / stringOpóźnienie między zapytaniami w sekundach (0). Można również ustawić wartość losową z przedziału, np. 10,30 - opóźnienie od 10 do 30 sekund
proxybannedcleanupnumberCzas bana proxy w sekundach (600)
pagecountnumberLiczba stron scrapowania (1)
parsecodes{ [code: string]: any }Wartości kodów odpowiedzi dla zapytań, które będą uważane za udane (any)
queryformatstringFormat zapytania ($query)
notatka

Możesz również definiować dowolne pola, które mogą być dostępne do edycji poprzez interfejs

static editableConf

To ustawienie definiuje listę pól konfiguracji, które mogą być edytowane przez interfejs. W interfejsie istnieją następujące typy pól:

  • textfield - pole do dowolnego wprowadzania wartości liczbowych i tekstowych
  • checkbox - flaga ze stanami włączony/wyłączony
  • combobox - lista rozwijana z wyborem jednej lub wielu wartości
  • wybór wielu wartości ustawia się poprzez opcję { multiSelect: 1 }

editableConf to tablica, w której każdy element opisuje odpowiednie pole konfiguracji:

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

Przykład deklaracji pól edytowalnych:

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;
}
Zrzut ekranu interfejsu z powyższymi ustawieniami
notatka

Zwróć uwagę, że w tym przykładzie użyto metody getter dla editableConf, co pozwala na dodatkowe przetwarzanie, na przykład generowanie listy stron. W prostszych przypadkach możesz definiować statyczne właściwości klasy, podobnie jak dla defaultConf

static parserOptions

parserOptions to alternatywny sposób definiowania ustawień, lista opcji wyświetla się jako dodatkowe pozycje w menu kontekstowym scrapera

Deklarowanie opcji działa analogicznie do editableConf:

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

Przykład deklaracji dodatkowych pól:

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]]
],
];
Zrzut ekranu interfejsu z powyższymi ustawieniami