查询格式化
Query format (查询格式) - 允许添加占位符并使用模板将查询格式化为所需的样式,应用于每个查询。
查询格式

- 第 1 个爬虫工具的查询格式
- 第 2 个爬虫工具的查询格式
- 通用查询格式
有两种指定模板的方法:
- 通用查询格式,它首先被处理并支持占位符
- 每个爬虫工具的查询格式 - 允许为特定爬虫工具设置特定格式
让我们分析截图中的示例,假设我们使用包含如下域名列表的文件作为查询:
google.com
a-parser.com
yandex.ru
通用查询格式设置为:
http://$query
在每个原始查询(域名)之前都会添加字符串 http://,查询将被转换:google.com -> http://google.com
第 1 个爬虫工具的查询格式保持不变,它将抓取查询 http://google.com
第 2 个爬虫工具的查询格式如下:
site:$query
该爬虫工具的查询将被转换:http://google.com -> site:http://google.com
查询中的模板
查询格式完全支持 Template Toolkit 模板引擎,可用变量包括:
$query- 经过通用结果格式格式化后的查询$query.num- 查询的序列号$query.lvl- 使用 Parse to level 或 Parse all results 选项时的查询嵌套层级$query.orig- 格式化前的原始查询$query.first- 使用 Parse to level 或 Parse all results 选项时的第一个查询$query.prev- 显示上一级的查询,适用于
HTML::LinkExtractor、$tools.query.add 以及 JS 爬虫工具的 this.query.add- 所有通过查询构造器创建的变量
占位符宏
通用查询格式支持以下宏:
| 宏 | 描述 | 示例 |
|---|---|---|
| {az:START:END} | 数字-字母序列插值。使用 START 指定序列开始,使用 END 指定结束。END 的长度必须大于或等于 START 的长度。序列末尾 END 的字符必须在序列开始 START 的字符之后(按字母顺序)。可以使用任何 UTF-8 字符序列 | {az:a:z} - 插值从 a 到 z 的所有字符 (a, b, c, ..., x, z)。{az:aaa:zzz} - 插值从 aaa 到 zzz 的所有字符 (aaa, aab, aac, ..., zzx, zzz)。{az:a:zz} - 插值从 a 到 zz 的所有字符 (a, b, c, ... aa, ab, ..., zx, zz)。{az:00:99} - 插值从 00 到 99 的所有数字 (00, 01, 02, ..., 98, 99)。{az:а:яяя} - 插值从 а 到 яяя 的所有西里尔字符 (а, б, ... аа, аб, ... яяю, яяя) |
| {each:WORD1,WORD2,...} | 插值指定的单词 WORD1、WORD2 等,长度不受限制 | {each:green,blue,red,black} - 插值单词 green, blue, red, black。{each:,buy,sell} - 先插值空单词,然后是 buy 和 sell |
| {subs:NAME} | 从 queries/subs/ 文件夹中的文件插值额外的单词。必须指定文件名 NAME,不带 .txt 扩展名 | {subs:zones} - 插值文件 queries/subs/zones.txt 中的所有行 |
| {num:START:END} | 该宏在指定范围内遍历数字。使用 START 指定区间开始,使用 END 指定结束。支持小数。 | {num:1:1000} - 插值从 1 到 1000 的所有数字 (1, 2, 3 ..., 999, 1000) |
| {num:START:END:STEP} | 该宏在指定范围内以指定步长遍历数字。使用 START 指定区间开始,使用 END 指定结束,使用 STEP 指定步长。支持小数。 | {num:0:1000:10} - 插值从 0 到 1000 步长为 10 的所有数字 (0, 10, 20 ..., 990, 1000) |
| {num:END:START} | 该宏在指定范围内反向遍历数字。使用 END 指定区间结束,START 指定区间开始。支持小数。 | {num:1000:1} - 插值从 1000 到 1 的所有数字 (1000, 999, 998, ..., 2, 1) |
| {num:END:START:STEP} | 该宏在指定范围内以指定步长反向遍历数字。使用 END 指定区间结束,START 指定区间开始,使用 STEP 指定步长。支持小数。 | {num:1000:1:10} - 插值从 1000 到 1 步长为 10 的所有数字 (1000, 990, 980, ..., 10, 1) |
⏩ 视频:占位符宏
本视频涵盖:
- 宏
{num}在翻页和
Maps::Google 爬虫工具坐标遍历中的应用示例 - 以使用 inurl: 进行数据抓取为例的
{az}宏,用于增加查询数量及相应的结果数量 - 以抓取建议词生成短语为例的
{each}宏
组合占位符宏
占位符宏可以组合使用。综合示例:
$query site:{subs:zones} {az:aa:zz}
假设其中一个抓取查询是 viagra,而 queries/subs/zones.txt 文件中包含以下后缀列表:com、net、org,那么抓取时将生成以下组合集:
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
查询总数将对应于可能组合的乘积:
1 个查询 (viagra) x 3 个区域 ({subs:zones}) x 676 个字符变体 ({az:aa:zz}) = 2028 个查询