跳转到主要内容

查询格式化

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

查询格式

查询格式示例
  1. 第 1 个爬虫工具的查询格式
  2. 第 2 个爬虫工具的查询格式
  3. 通用查询格式

有两种指定模板的方法:

  • 通用查询格式,它首先被处理并支持占位符
  • 每个爬虫工具的查询格式 - 允许为特定爬虫工具设置特定格式

让我们分析截图中的示例,假设我们使用包含如下域名列表的文件作为查询:

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 模板引擎,可用变量包括:

占位符宏

通用查询格式支持以下宏:

描述示例
{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,...}插值指定的单词 WORD1WORD2 等,长度不受限制{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::GoogleMaps::Google 爬虫工具坐标遍历中的应用示例
  • 以使用 inurl: 进行数据抓取为例的 {az} 宏,用于增加查询数量及相应的结果数量
  • 以抓取建议词生成短语为例的 {each}

组合占位符宏

占位符宏可以组合使用。综合示例

$query site:{subs:zones} {az:aa:zz}

假设其中一个抓取查询是 viagra,而 queries/subs/zones.txt 文件中包含以下后缀列表:comnetorg,那么抓取时将生成以下组合集:

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 个查询