跳转到主要内容

结果过滤器

A-Parser 中,可以根据一组特定规则对结果进行过滤,并仅将所需数据保存到结果中。

使用过滤功能

主要应用场景:

  • 仅保存包含特定字符串特征的链接(例如 CMS 标识)
  • 按特定参数过滤域名库(例如 Yandex 权重 IKS 大于 300,语言为 RU)
  • 检查服务器响应(例如 200 OK 或包含特定请求头)
  • 检查原始查询是否出现在摘要(Snippet)中
  • 任何其他需要根据特定条件限制结果的应用场景

可以在任务编辑器中,点击对应爬虫工具旁边的工具图标来添加过滤器:

任务编辑器中的过滤器选项

过滤类型

既可以过滤单个结果,也可以过滤结果数组。存在以下几种过滤器类型:

  • 字符串相等或不等
  • 包含或不包含子字符串
  • 符合或不符合 正则表达式
  • 数值可以按大于、小于和等于进行过滤
提示

另请参阅:结果展示

工作特性

  • 在过滤结果数组时,数组中仅保留符合过滤条件的结果
  • 在过滤简单结果时,如果结果不符合过滤条件,则该查询的整个结果将被跳过,包括在使用多个爬虫工具的情况下
  • 在任务中使用两个或更多过滤器时,它们之间应用逻辑 与 (AND),换句话说,只有同时满足所有过滤器条件的结果才会被保存
  • 在指定值(字符串、正则表达式或数值)的字段中,可以使用 Template Toolkit 模板引擎,所有与 通用结果格式 相同的变量均可用

示例

按页面文本过滤

检查网站库中页面是否包含特定文本
使用包含链接的文件作为查询,结果将得到一个经过过滤的文件,其中包含出现目标文本的链接。

使用 Net::HTTPNet::HTTP 爬虫工具下载目标页面,将请求(要检查的链接)保存到结果中。过滤 $data - 下载页面的内容,设置过滤器类型 Contain string,并指定字符串本身:

按页面文本过滤的示例

按尺寸过滤图片

按分辨率过滤图片
在使用 SE::Google::ImagesSE::Google::Images 进行数据抓取时过滤图片的宽度和高度,仅保存大于 500x500 像素的图片:

按尺寸过滤图片的示例

按多个特征过滤

按包含多个不同字符串中的任意一个来过滤链接
为了按多个不同字符串过滤链接,我们将利用指定 正则表达式 的功能,为此使用分隔符记录多个特征:

showthread\.php
/forum/
viewtopic\.php\?t=
备注

请注意,正则表达式需要对一系列字符进行转义

按多个标准过滤的示例

在过滤器中使用查询

保存包含原始查询的 Google 摘要
在比较字符串中明确指定 [% query %] —— 这是包含查询的变量,选择 Sensitive 以便在搜索子字符串时考虑字符大小写:

在过滤器中使用查询的示例