通过界面进行配置
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 的 getter 方法,这允许进行额外的处理,例如生成页面列表。对于更简单的情况,您可以像设置 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]]
],
];
