跳转到主要内容

通过界面进行配置

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 - 设置默认的结果格式

所有其他字段都是可选的,以下是影响爬虫工具工作的参数列表:

参数名称类型描述(默认值)
timeoutnumber最大请求等待时间,单位为秒 (60)
useproxyboolean / 0 / 1确定是否使用代理 (1)
max_sizenumber结果文件的最大大小 (1 * 1024 * 1024)
proxyretriesnumber每个请求的重试次数,如果请求在指定次数内未能成功执行,则视为失败并跳过 (10)
requestdelaynumber / string请求之间的延迟,单位为秒 (0)。也可以设置一个范围内的随机值,例如 10,30 表示 10 到 30 秒之间的延迟
proxybannedcleanupnumber代理封禁时间,单位为秒 (600)
pagecountnumber数据抓取的页数 (1)
parsecodes{ [code: string]: any }被视为成功的请求响应代码值 (any)
queryformatstring查询格式 ($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]]
],
];
上方设置的界面截图