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用来描述我们在这个数据片中感兴趣的数据

目录
相关文章
|
3月前
|
开发者
条件判断的模式问题之在契约式编程中,先验条件和后验条件分别代表什么
条件判断的模式问题之在契约式编程中,先验条件和后验条件分别代表什么
|
5月前
|
C#
C#动态查询:巧用Expression组合多条件表达式
在C#中,利用`Expression`类和`AndAlso`、`OrElse`方法,可以组合两个`Expression<Func<T, bool>>`以实现动态多条件查询。该方法通过构建表达式树,方便地构建复杂查询。示例代码展示了如何创建表达式树,分别检查年龄大于等于18和姓名为"John"的条件,并使用`AndAlso`组合这两个条件,最终编译为可执行的委托进行测试。
164 1
|
5月前
|
Java Python
条件运算符与条件表达式:编程中的高效决策工具
在编程中,条件运算符和条件表达式是两种强大的工具,它们允许程序根据特定的条件来执行不同的操作或返回不同的值。这些工具不仅提高了代码的可读性和可维护性,还使得程序能够更灵活地处理各种情况。本文将深入介绍条件运算符和条件表达式的概念,并通过示例代码展示它们在实际编程中的应用。
41 1
|
5月前
|
Java
基本概念【算术、 关系、逻辑、位、字符串、条件、优先级等运算符】(三)-全面详解(学习总结---从入门到深化)
基本概念【算术、 关系、逻辑、位、字符串、条件、优先级等运算符】(三)-全面详解(学习总结---从入门到深化)
56 0
|
算法
表达式转换-中缀转后缀表达式后计算-数据结构与算法
表达式转换-中缀转后缀表达式后计算-数据结构与算法
371 0
表达式转换-中缀转后缀表达式后计算-数据结构与算法
|
12月前
|
算法
6.解析表达式算法
6.解析表达式算法
|
数据库
机房重构—在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
177 0
|
前端开发
Less预处理——继承、导入、条件表达式和函数
Less预处理——继承、导入、条件表达式和函数
285 0
简单表达式的计算(两种方法)
数据结构中对于栈的运用,最主要的一个例子就是简单表达式的计算了,当你独自将这个程序写出来的时候,这说明你对于栈的运用已经炉火纯青了,下面我将对这个问题做出详细的解答,让我们一起来看看吧
90 0
简单表达式的计算(两种方法)
|
数据可视化
单变量和多变量对基因表达式的预测能力对比(上)
单变量和多变量对基因表达式的预测能力对比
132 0
单变量和多变量对基因表达式的预测能力对比(上)