RuiJi Scraper基础 – RuiJi表达式模型

前言

RuiJi表达式是RuiJi Scraper的抽取模型,同时也是RuiJi.Net开源爬虫框架的抽取模型,RuiJi.Net是github上的开源项目,贡献者同时也是RuiJi Scraper的作者。

RuiJi表达式是大量的爬虫工作中总结出的经验,基本上可以适用于所有需抓取的网页。

数据块 Block

在网页设计时,网页设计者往往会使用样式,ID等来区分网页的区域,不同的区域显示不同的内容,这不仅在网页设计上是大多设计者共同使用的习惯,同时也利用该种方式,在最终产品上形成视觉可识别的区域,使使用者能过快速的定位自己关心的内容。

Block是我们需要提取的区域,在一个页面中这种区域可能存在多个。我们以google的RuiJi Scraper搜索结果为例来说明一下Block。

从图中我们可以看出,google的页面搜索结果(all)大致分为三部分,视频搜索结果,图片搜索结果,网页搜索结果。这三种搜索结果以不同的形式展示给搜索用户,视频和图片的搜索结果为横向,网页的搜索结果为纵向,三种搜索结果的数据都有各自的展示形式。视频搜索结果横向,具有视频预览,时长,标题,作者,来源,上传时间。图片搜索结果横向,主要展示形式为图片。网页搜索结果纵向,具有标题,网址,摘要。我们可能对其中的一部分或全部内容感兴趣。

Block用来定位我们感兴趣的需要提取的区域。

在Block未被定义的情况下,RuiJi表达式默认将Body作为Block

数据片 Tile

正如上面所述,每个Block可能都具有各自的展示形式(也可能相同),但是每个Block中的内容的体现形式是一样的,在网页开发中,开发者往往使用循环的方式,将需要展示的数据以相同子元素的形式展示在页面中。我们同样以google的RuiJi Scraper搜索结果其中的网页搜索结果为例,如下图所示:

如果我们忽略Tile中的内容的话,您将发现Block中是以相同子元素进行循环来向用户展示数据。

Tile被用来定义Block中重复的子元素

元数据 Meta

元数据是我们真正要提取的数据,我们将这些数据抓取下来,保存到文档或数据库,以备后续使用。RuiJi Scraper会将提取出的数据按照所属Tile,Block进行分组,并将抽取结果转换为结构化的数据。下图展示的是一个数据片的搜索结果形式。这里具有标题,链接和摘要。Meta用来描述我们在这个数据片中感兴趣的数据。这里元数据的数量根据您的需要进行定义。

Meta用来描述我们在这个数据片中感兴趣的数据

Copied!