什么是规则?
规则是一系列采集动作的集合,迷你派采集器的规则由节点组成,每个节点告诉采集器如何操作和采集当前所在网页。
例如:
以下规则有3个节点:开始、搜索结果和详细信息。
什么是节点?
节点是NDS预先包装好的一组指令,用于完成特定的任务。
为了简化规则开发和数据采集,NDS提供了3类节点:关联节点、列表节点和详情节点。组合这3类节点既可以定义采集规则。
关联节点
关联节点由一系列动作组成,这些动作将按顺序执行。通常,我们使用关联节点来新打开一个网址、提交搜索以准备搜索结果页或为下一个节点做一些准备。
关联节点从上到下逐一执行操作。在遇到 >由此进入下一个节点< 动作时,关联节点将立即进入下一个节点,并在完成所有后续节点的任务后,再续执行本关联节点剩余的操作。 如果本关联节点中没有>由此进入下一个节点<,则将在执行完所有操作后自动进入下一个节点。
列表节点
列表节点用来处理一页中重复结构的数据采集.
例如:
一个表中的多行
电商商品列表页中的多个商品信息
搜索结果页中的多个搜索结果项
所有这些页面都有一个公共特点:其中有多个结构或布局相似的块,每个块都包含类似的字段,如标题、价格、简要描述等。
以Google Map搜索结果为例:
BlocksFields
在这里,左侧突出显示的每个餐厅都是一个块,块中的餐厅名称作为字段突出显示。直观一点理解: 块类似于采集结果中的行, 而块中的字段类似于每一行中的单元格的值。
网站通常通过鼠标向下滚动或单击翻页按钮显示更多块。
列表节点有 3 个选项卡:数据、分页和导航。
数据选项卡:
用来声明块和字段,以及在每个块处理之前执行的任何动作
分页选项卡
声明如何装载更多的列表和列表块,并在加载新页面/列表之前执行的动作
导航选项卡
宣布如何导航到下一个节点
详情节点
与列表节点不同,详细节点从当前页面采集一次性内容。(则与页面的类型无关, 可以从列表页面中采集一次性的内容)
在列表节点和详情节点中,您可以通过点击"节点名称"之后的大头针图标 (
) ,将当前页面与节点建立关联。 而后通过单击或自动导航到本节点时,浏览器会自动加载节点关联的页面。
创建规则后,规则可以被反复执行。迷你派采集器会按规则中声明的节点逐个执行所有的动作。
例如,有一个电子商务网站。您希望通过关键字搜索,而后采集搜索结果列表上的所有商品。
相应的创建规则如下:
以下是迷你派采集器处理规则的过程:
数据转换
定位元素并声明属性后,NDS 从目标元素中提取内容。 但有时您可能希望在保存到输出表之前转换内容。 例如,删除一些多余的前缀,或替换一些文本。 NDS 提供了丰富的内置转换器,让您可以编写自己的正则表达式来灵活处理内容。 点击各字段属性框后的预览变换图标(
) 在每个字段的属性框之后,会弹出预览和转换对话框。
构建数据转换:
正则模板内容抽取 它提供了各种内置的正则表达式来提取内容。 例如:
整数: 仅从内容中提取整数
数值: 从内容中提取所有数字和点
邮箱地址
IPv4地址
IPv6地址
URL网址
美国手机号码格式
英国手机号码格式
大陆手机号码格式
大陆带区号的手机号码格式
各种各样的日期格式
美国SSN号格式
大陆身份证号格式
台湾身份证号格式
美国邮编格式
英国邮编格式
简单内容抽取 如果内置的正则表达式没有适合您的,并且你没有正则表达式技巧,您可以使用简单抽取来实现基本的内容抽取
例如,我们只是告诉 NDS 提取 '$' 和 '.' 之间的内容。
手动正则表达式抽取 如果您有正则表达式技能,您可以在此处写自己的抽取正则表达式。
正则模板内容替换 选择一个内置的正则表达式,并告诉要替换的内容。 NDS 将用您的内容替换所有匹配的内容。
简单内容替换 如果没有合适的内置替换正则表达式,并且你没有正则表达式技巧,你可以使用简单替换来实现一些基本的替换。
手动正则表达式替换 如果您有正则表达式技能,您可以在此处编写自己的替换正则表达式。
添加文字 该操作有助于在指定位置插入一些文本。
您可以添加多个数据转换。 内容会以pipeline的方式进行转换,并返回最终结果。
在这里单击“预览”按钮可以预览转换结果。
重复数据删除
重复数据删除是指过滤掉爬取过程中可能遇到的重复数据。
创建新的输出表时,您可以选择一个或多个字段作为主键,以过滤重复项。 在屏幕截图中,我们选择“名称”和“链接”字段作为主键。
在 NDS 中,每个数据表可以接受多个规则来存储抓取的数据。 配置的 unqiue 字段用作所有规则的过滤器,这些规则将数据保存到表中。
一旦数据表配置了唯一字段,您将无法再次对其进行编辑。 要更改唯一字段,您可以重命名“保存到”以创建一个新表并在规则保存对话框中为该表设置新的主键。
注意: 启动时更改输出数据表名称不会影响唯一字段。 旧的唯一字段(如果存在)将自动应用于新数据表。
定时抓取
在 NDS 中定期运行规则很容易。 您需要的是在保存规则或启动规则时选择频率。
触发器
NDS 支持许多内置触发器和 JS 触发器。 后者使您可以定义触发后要执行的操作。
内置触发器
触发器描述
输出行一旦'If'条件为真,将当前行保存到输出表,否则该行被忽略
不输出行一旦 'If' 条件为真,则忽略当前行,否则该行将保存到输出表中
输出行前合并字段一旦'If'条件为真,将指定字段合并为一个新字段
输出行并结束一旦'If'条件为真,保存该行,并结束配方; 否则保存该行并继续抓取
不输出行并结束一旦'If'条件为真,忽略该行,并结束配方; 否则继续照常
输出行,结束并启动新规则一旦'If'条件为真,保存该行,结束配方并开始指定的规则; 否则保存该行并继续抓取
不输出行,结束并启动新规则一旦'If'条件为真,忽略该行,结束配方并开始指定的配方; 否则继续抓取
结束后启动新规则当配方结束时,启动指定的配方
JS触发器
即将推出