RuiJi Scraper 分页抽取

如果想抽取分页结,您需要在规则配置中配置分页选择器,分页选择器位于规则编辑器最下方,如图所示

请注意以下分页选择器的配置要求

1.  分页选择器的默认名称为 _paging,请不要修该名称

2. 分页选择器要求选择出的结果为链接地址

下面我们以百度新闻的搜索结果为例举例说明下分页选择的配置

首先观察下分页的形式,具有数字分页链接及上一页下一页的链接

我们需要提取出所有的地址,并排除掉上一页及下一页的超链接

最终的分页抽取器配置如下

如上选择器的解释为

1. 选择#page 元素的外部html源码

2. 排除带有class为n的a标签,并选择外部html(排除上一页及下一页的链接地址)

3. 选择a标签的href属性的值作为输出结果

RuiJi Scraper 网页视觉识别

网页设计师在设计网页的过程中,往往会考虑页面的视觉结构,这使得使用者可以快速分辨出网页不同区域(RuiJi Scraper的数据块,数据片,元数据就是基于此所定义)。在大多数的网页中,页面中的不同的区域会通过横向或纵向布局,布局块边距等来达到视觉识别目的。以如下页面为例:

从整体上来看,该页面分为导航区,搜索结果区,热词区。每个区域内还有区域划分,例如搜索结果区的每个搜索结果还分为文本区和缩略图区。这种结构良好的页面,通过视觉识别算法可以将不同区域的内容自动识别出来。

下面我们来介绍RuiJi Scraper网页视觉识别功能的使用。我们同样也上面的页面为例。

1.  首先打开搜狗微信搜索,搜索任意关键词,到搜索结果页面

2. 打开RuiJi Scraper抽取面板,视觉识别位于公共选项卡第一项

这里面的选项为过滤条件,视觉识别出的元素可能很多,我们只对其中一部分感兴趣,选项的默认值所表示如下:

宽 : 显示宽度在0像素-1024像素之间的Dom

高:显示高度在0像素-1024像素之间的Dom

深度:Dom树深度,显示深度0-深度50

子块:具有大于等于5的子块

重组:根据class或path重组数据,适合部分结构不太良好的页面

移除相同数据:如果某列识别出的数据完全一样,该列将不再结果中展示

3. 点击识别按钮

4. 观察识别结果

这里的5:0的意义为冒号前为深度,冒号后面为序号,深度可以用来重新设置深度过滤条件,序号仅是编号。

5. 点击识别出的区域上面的编号

6. 查看识别结果

这看着有些挤,但是您可以将面板停靠在页面下端来观看抽取结果,或者直接使用导出按钮,导出结果后查看。

 

RuiJi Scraper 选择器函数

选择器函数用于用户调用自定义方法处理抽取结果,我们需要抽取的页面显示的抽取结果,有可能并不是我们想要的最终结果,这时候我们就需要使用函数来进行一些特殊的转换操作,以使最终的抽取结果满足我们的需要。

例如我们往往在一些网站看到的文章时间是x分钟前,x小时前。这样的结果我们无法以日期的形式进行存储,而且,随着当前时间的改变,这些抽取的结果就会不正确。这时候我们可以使用函数来讲x分钟前,x小时前这样的内容转换为日期。

以下示例示范了选择器函数的使用过程,首先打开规则编辑器

从选择器列表中选择 Proc 选择器

点击编辑

以下是弹出的函数编辑器

选择器函数您可以任意命名,参数c是上次选择器的处理结果,函数必须具有返回值,以将处理结果传送到下个选择器或作为最终结果

此示例函数的功能为返回文本长度。在这里为计算标题的长度。

点击确认保存最终结果,之后您就可以在抽取中使用了。

在工作薄中查看

使用RuiJi Scraper将文章导入WordPress

WordPress做为个人博客系统,小型企业网站被越来越多的用户使用。个人站长或企业网编在日常编辑中会转发一些精彩的内容到自己的站点。

重复的复制黏贴操作往往会令人烦躁。RuiJi Scraper注意到了这点,使用RuiJi Scraper的导入工具可以轻松将RuiJi Scraper抽取的文章导入到WordPress中。

您需要参考如下操作,来配置此项功能(2.2.4版本及以上)。

一、安装RuiJiScraper-WordPressPlugin插件

1. 您需要WordPress中安装RuiJiScraper-WordPressPlugin插件,这个插件会显示一些我们需要在Ruij Scraper中需要的信息

从github上下载该插件 https://github.com/zhupingqi/RuiJiScraper-WordPressPlugin

将zip文件保存到您的目标文件夹。

2. 登陆WordPress后台,进入插件页面, 点击安装插件

3. 点击上传插件

4. 选择您刚才下载的文件,并点击 现在安装

5. 等待插件安装完成,并启用插件。启用后管理菜单将会出现 RuiJi Scarper的菜单

6. 点击RuiJi Scraper菜单

如果您看到类似页面,说明WordPress的RuiJi Scraper插件安装成功。

接下来,您需要安装RuiJi Scraper 您可以在网站找到相关教程。我们假设您掌握了一定的RuiJi Scraper使用技能,并能够成功抽取页面数据。接下来我们将介绍如何使用RuiJi Scraper将文章导入WordPress。

二、使用RuiJi Scraper工作簿导出文章至WordPress

1.  首先您需要确认您当前的浏览器已经登录了WordPress并且登录账户具有相应权限, RuiJi Scraper使用WPAPI进行文章导入,并使用当前浏览器Cookie及Cookie Nonce进行验证。

2. 您需要抽取一些数据,然后打开工作薄

3. 从工作薄中选择一些您需要导入WordPress中的文章,并点击Export To下面的WordPress

4. 参照如下图片将WordPress后台RuiJi Scraper页面的内容负责到对应位置

注:nonce会在一段指定的时间后过期,如果过期,您需要重新设置该项

5. 编辑模板

模板的内容为您定义规则时的字段名称,在导入模板中这些字段名称可以组合使用。如果您没有定义该两项内容,会使用以上图片中的内容当做默认值。

6. 点击Export

如果您的配置正确的话,您可以到WordPress的文章列表中查看刚刚导入的文章了。

 

RuiJi Scraper 选择器

如之前课程所述,选择器首先是用来描述出需选择的数据块Block、数据片Tile或元数据Meta所在的区域,在RuiJi Scraper中,必须以Css选择器为开始。

在描述出需选择的区域之后,可以根据需要对选择出的区域的源代码进行下一步的清洗,整理。所以在RuiJi Scraper中选择器为一个数组。通常第一个选择器用来选择区域,之后的选择器用做清洗,整理数据之用。从第二个选择器开始,选择器的输入是上一个选择器的输出。

在RuiJi Scraper中提供了多种选择器,如果您对数据的精细度没有太大要求的话,只使用一个选择器就可以,如果您希望提取出的数据更加精确,更满足业务需要,您可以使用更多的选择器来达到您的目的。

RuiJi Scraper的选择器与RuiJi.Net的选择器一样,具有如下类型:

类型 说明 选项 说明
css Css选择器 outerHTML Dom外部HTML
innerHTML Dom内部HTML
text Dom内文本
Attribute Dom上的属性
reg 正则选择器 n
[…]
可选填,数字类型
未定义取出正则匹配结果
已定义取出第n个结果,可以为多个
regS 分割选择器 strR n 以正则strR进行分割,取第n个结果
text 文本区域选择器 beginR endR 裁剪出beginR和endR之间的文本
ex 排除选择器 strR -a 排除strR的正则结果
strR -b 排除开始位置strR的正则结果
strR -e 排除结束位置strR的正则结果
regR 替换选择器 strR str 将strR的正则匹配结果替换成str
jpath JSON选择器 path 预留
xpath xpath选择器 path 预留
clear 标签清除选择器 tag 清除tag标签
exp 表达式选择器 urlexp 以通配符方式匹配出地址
proc 函数选择器 name 需要执行的函数名称

其中n代表数字类型,以R为结尾的参数代表为正则表达式

 

 

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

如何在Chrome浏览器中安装RuiJi Scraper

由于谷歌插件审核时间较长,跟不上插件的更新速度,想体验新功能的朋友使用手动安装的方式来自行安装RuiJi Scraper

首先您需要安装最新版的谷歌浏览器或其他使用谷歌内核的浏览器,例如:腾讯浏览器,360浏览器,搜狗浏览器,猎豹浏览器,百度浏览器,遨游浏览器等

这里以谷歌浏览器为例。

1.  首先从官网下载谷歌内核的插件压缩包,并解压至您的保存目录

2. 然后打开浏览器,从菜单中选择设置

3. 在打开的页面中继续点击左上角的设置

4. 在弹出的菜单中选择扩展程序

5. 打开开发者模式

6. 点击加载已解压的扩展程序,

7. 选择您在第一步中文件的保存位置

8. 恭喜您,安装完成

Copied!