Конфигурация через интерфейс
A-Parser позволяет задавать конфигурацию в декларативном стиле, а также использовать интерфейс для создания и редактирования пресетов без необходимости модификации исходного кода парсеров
static defaultConf
static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};
Конфигурация парсера по умолчанию, конфиг будет доступен в объекте класса через свойство this.conf
, обязательными являются следующие поля:
results
- описывает в декларативном стиле результаты, которые может возвращать данный парсерresults_format
- задает формат результата по умолчанию
Все остальные поля являются опциональными, существует следующий список параметров, которые влияют на работу парсера:
Название параметра | Тип | Описание (значение по умолнанию) |
---|---|---|
timeout | number | Максимальное время ожидания запроса в секундах (60 ) |
useproxy | boolean / 0 / 1 | Определяет использовать ли прокси (1 ) |
max_size | number | Максимальный размер файла результата (1 * 1024 * 1024 ) |
proxyretries | number | Количество попыток на каждый запрос, если запрос не удаётся выполнить за указанное число попыток то он считается неудачным и пропускается (10 ) |
requestdelay | number / string | Задержка между запросами в секундах (0 ). Также можно задавать случайное значение в промежутке, например 10,30 - задержка от 10 до 30 секунд |
proxybannedcleanup | number | Время бана прокси в секундах (600 ) |
pagecount | number | Количество страниц парсинга (1 ) |
parsecodes | { [code: string]: any } | Значение кодов ответов для запросов которые будут считаться успешными (any ) |
queryformat | string | Формат запроса ($query ) |
Вы также можете задавать произвольные поля, которые могут быть доступны для редактирования через интерфейс
static editableConf
Данная настройка задает список полей конфигурации, которые могут быть отредактированы через интерфейс. Существуют следующие типы полей в интерфейсе:
textfield
- поле для произвольного ввода числовых и строковых значенийcheckbox
- флаг с состояниями включен/выключенcombobox
- дропдаун с выбором одного или нескольких значений- выбор нескольких значений задается через опцию
{ multiSelect: 1 }
editableConf
представляет из собой массив, каждый элемент которого описывает соответсвующее поле конфигурации:
static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Пример объявления редактируемых полей:
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;
}
Обратите внимание, в данном примере использован метод-геттер для editableConf
, что позволяет производить дополнительную обработку, например генерацию списка страниц. Для более простых случаев вы можете задавать статичное свойства класса, аналогично как и для defaultConf
static parserOptions
parserOptions
является альтернативным вариантом задания настроек, список опций отображается как дополнительные пункты в контекстном меню парсера
Декларирование опций работает аналогично editableConf
:
static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];
Пример объявления дополнительных полей:
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]]
],
];