一、数据分页设置页简介

1、说明

我们经常遇到一些网站在显示文章内容时,将内容分成了几个页面来显示,我们需要翻页才能依次阅览全部内容,当我们采集这类网站的文章时,就需要使用数据分页;在ET中,我们可以从两种分页方式中选择其一来采集分页,分别是‘采集方式’和‘逻辑方式’,[数据分页-逻辑方式设置页]见图示1:


(图示1:逻辑方式数据分页)

 

数据项从所属采集页(即第一个分页)源代码中用数据项采集规则分析获取内容,然后分别从每一个分页源代码中单独用数据项采集规则分析获取内容 ,这些内容将依顺序合并,并以[内容分隔]标记 “ #-0-# ” 分隔;

 

注:为避免用户错误的配置导致分页采集陷入死循环,使用逻辑方式获取的分页数上限为2000。

 

当访问分页失败时,不中断对该篇文章的采集。

 

注:在2.4版以前,分页仅对正文数据项有效,从2.4版开始,各个数据项都可以从分页中获取内容了。

在2.4版以前,是先将全部分页源代码依次合并后,再用数据项采集规则分析获取内容;2.4版开始,是先单独从每个分页源代码中用数据项采集规则分析获取内容后,再将获取的各个内容按顺序合并。因此,2.4版之前使用了正文分页功能的采集规则,在升级到2.4版后可能会存在兼容问题,需要调整。

 

二、启用逻辑方式

逻辑方式是指通过预设的规则推算出各个分页网址的方式,这种方式设置上比采集方式简单一些,但使用范围稍窄,只适用于分页网址按数字规律递增或递减的情况;

 

要使用逻辑方式获取分页,请勾选[使用逻辑方式],见图示:


 

数据分页是做为某一个采集页的分页存在的,而该采集页,就是第一个分页,例如一篇文章的内容页显示为多个分页,一件商品的评论页显示为多个分页,因此需要设置数据分页属于哪一个采集页,见图示:

 

 

三、当前网址分解

1、说明

[当前网址分解]为必填项,用于从数据分页所属采集页的完整网址中提取出[分页地址]信息,用于在接下来的逻辑运算中组成完整的分页网址,见图示3:



(图示3)

 

由于在多数规则中,数据分页所属采集页都是第一个采集页,因此[当前网址分解]的规则通常与 采集配置-列表设置-文章网址合成 的规则是一致的;

注:如果文章网址有重定向,那么这里应该使用重定向后的完整网址来做网址分解;

 

点击 图标,可以对[d当前网址分解]进行测试;


2、标记区

[当前网址分解]有一个可用标记,见图示3;

 

1、分页地址

标记代码为<%fileid%>,用于表示当前网址中用于和其他网址区别的具有唯一性的特征字符串,[分页地址]标记在规则中仅可使用一次;

 

关于标记更多说明见相关主题 ET内部运算标记注解

 

 

3、参考范例

以采集ET官方论坛‘ET2.0安装使用’版(网址http://bbs.zzcity.net/forumdisplay.php?fid=31)为例:

 

1、我们通过要 采集配置-列表设置-文章网址合成 得到了文章的完整网址如下:

 

http://bbs.zzcity.net/viewthread.php?tid=348556

2、上例网址中,字符串‘348556’是该网址的唯一性特征字符串,当然,我们选择‘tid=348556’这样的字符串也毫无问题,填写[当前网址分解]规则如下:

 

http://bbs.zzcity.net/viewthread.php?tid=<%fileid%>

 

 

四、分页增量

1、说明

[分页增量]为必填项,本项用以在指定范围内计算出每一个分页网址中规律变化的特征数字编号,将与[分页地址]一起在[分页网址合成]中组成完整的分页网址,见图示4:


(图示4)

 

起始编号与结束编号只能填写数字,数字位数应与真实列表网址一致,例如"01"不等于"1";

起始编号如果比结束编号大,那么[分页增量]按步长递减,如果起始编号比结束编号小,那么[分页增量]按步长递增;

步长表示每次递增或递减的增减量,无论增减,步长为正整数;

避免重复采集,起始编号一般情况下不会为‘1’或‘01’等数字,因为[正文]数据项所属的采集页面,即第一个分页在执行正文分页的采集前已经被采集了,而多数网站的习惯是将这个页面作为‘1’、‘01’等编号的分页;

结束编号通常设置为一个较大的、实际分页数目达不到的数字,这样分页增量将囊括可能出现的全部有效数字编号,而判断分页是否是实际上的最后一页,我们是通过[有效分页特征码]来进行的;

 

2、参考范例

以采集ET官方论坛‘ET2.0安装使用’版(网址http://bbs.zzcity.net/forumdisplay.php?fid=31)为例:

 

1、一个有多个分页的帖子,各个分页网址如下:

 

http://bbs.zzcity.net/viewthread.php?tid=348556&extra=page%3D1

http://bbs.zzcity.net/viewthread.php?tid=348556&extra=page%3D1&page=2

http://bbs.zzcity.net/viewthread.php?tid=348556&extra=page%3D1&page=3

http://bbs.zzcity.net/viewthread.php?tid=348556&extra=page%3D1&page=4

……

 

2、去除不必要的参数,可以简化为:

 

http://bbs.zzcity.net/viewthread.php?tid=348556

http://bbs.zzcity.net/viewthread.php?tid=348556&page=2

http://bbs.zzcity.net/viewthread.php?tid=348556&page=3

http://bbs.zzcity.net/viewthread.php?tid=348556&page=4

……

 

3、那么上面的各个网址中,有规律变化的且具备是唯一性特征数字编号很容易找出来,分别是‘2’、‘3’、‘4’等等,这些数字是加1递增的,于是我们得到了步长1,我们设置一个较大的、通常不会达到的数字‘100’作为结束编号,于是我们配置这个正文分页的[分页增量]如下:

 

4、注意在上例中,我们是以网址为page=2的分页作为起始页编号的,所以起始编号设为2,这是因为[正文]数据项所属的第一个页面,也就是[当前网址分解]里的“当前网址”,这个页面在采集分页之前,已经被采集了。

 

 

五、分页网址合成

1、说明

[分页网址合成]为必填项,本项使用[分页地址]和[分页增量]在此合成为完整分页网址,见图示5:


(图示5)

 

完整分页网址可以使用相对当前页的的相对链接和完整链接,如:“../../page-<%fileid%>-<%step%>.htm” 、 “page-<%fileid%>-<%step%>.htm” 、 “http://xxx.xxx.com/news/page-<%fileid%>-<%step%>.htm” 等;

 

注:文章地址为计算机本地文件路径时分页网址必须为完整地址,不能使用相对地址;

 

点击 图标,可以对[分页网址合成]进行测试;

 

2、标记区

[分页网址合成]有2个可用标记,见图示5;

 

1、分页地址

标记代码为<%fileid%>,为必用项,用于表示各个分页网址中固定的特征字符串,和[当前网址分解]中的[分页地址]标记为同一个标记,用于引用其值;

 

2、分页增量

标记代码为<%step%>,为必用项,用于表示每一个分页网址中规律变化的特征数字编号,由本文第三节的逻辑规则计算得出;

 

关于标记更多说明见相关主题 ET内部运算标记注解

 

 

3、参考范例

以采集ET官方论坛‘ET2.0安装使用’版(网址http://bbs.zzcity.net/forumdisplay.php?fid=31)为例:

 

1、我们在本文第二节和第三节中分别得出了[分页地址]和[分页增量],根据对这两个标记的表述,我们设置[分页网址合成]规则如下:

 

http://bbs.zzcity.net/viewthread.php?tid=<%fileid%>&page=<%step%>

上例中,[分页地址]<%fileid%>替换了分页网址中的固定特征字符串‘348556’,而[分页增量]<%step%>替换了分页网址中的规律变化数字编号‘2’、‘3’、‘4’等;

 

 

六、特征码

1、说明

特征码由两部分组成,分别是[分页特征码]和[尾页特征码];


(图示6)

 

注:在2.4版之前,[分页特征码]为[有效分页特征码],[尾页特征码]为[非尾页特征码];从2.4版开始,用户可以自行选择特征码的类型。

 

 

1、分页特征码

[分页特征码]为必填项,内容为从网页源代码中选取的一个字符串,通过网页源代码是否包含该字符串来判断分页网址合成的网页是否有效分页,见图示6;

 

有效页 勾选本项时,网页源代码中包含特征码字符串的网页被视作有效分页,默认分页特征码作为有效分页特征码;

无效页 勾选本项时,网页源代码中包含特征码字符串的网页被视作无效分页;

特征码 为一个仅所有有效分页或无效分页源代码包含的字符串,设置分页特征码无须考虑第一分页,即所属采集页。

 

一旦按逻辑运算出的分页网址采集到的页面源代码不包含[有效页]类型[分页特征码],系统则认为前一个采集到的页面是最后一个有效分页,此时系统结束采集分页;

如果按逻辑运算出的分页网址采集到的页面源代码包含[无效页]类型[分页特征码],系统则认为前一个采集到的分页是最后一个有效分页,此时系统结束采集分页;相反,如果页面源代码不包含[无效页]类型[分页特征码],那么该页面被视作有效分页。

 

2、尾页特征码

[尾页特征码]可以选填,内容为从网页源代码中选取的一个字符串,通过网页源代码是否包含该字符串来判断分页网址合成的网页是否最后一个分页,通过和[分页特征码]的配合使用,用以确定正文分页的结束页,见图示6;

 

非尾页 勾选本项时,网页源代码中包含特征码字符串的网页被视作不是最后一个分页,默认尾页特征码为非尾页特征码;

是尾页 勾选本项时,网页源代码中包含特征码字符串的网页被视作最后一个分页;

特征码 为一个仅最后一个分页或所有不是最后一个分页源代码包含的字符串,设置尾页特征码无须考虑第一分页,即所属采集页。

 

当[尾页特征码]不为空时,第一个不包含[非尾页]类型[尾页特征码]的有效分页作为最后一个有效分页,此时系统结束采集分页;

第一个包含[是尾页]类型[尾页特征码]的有效分页作为最后一个有效分页,此时系统结束采集分页;

 

 

 

2、参考范例一

以采集ET官方论坛‘ET2.0安装使用’版(网址http://bbs.zzcity.net/forumdisplay.php?fid=31)为例:

1、论坛的帖子分为两种,一种是有分页的,一种是无分页的;比较特殊的是,当分页网址越界即(分页增量编号超过实际尾页编号)时,Discuz论坛不会提示越界,而是直接显示最后一个分页,如果没有分页则显示第一个页面;

 

2、通过比较无分页的帖子和有分页的帖子,可以看到,凡是位于中间的分页页面,分页导航上都有向前、后翻页的链接‘‹‹’和‘››’,而尾页上则没有向后翻页的链接‘››’,我们查找到它们的源代码,如下:

 

<a href="viewthread.php?tid=348556&amp;extra=page%3D1&amp;page=2" class="prev">&lsaquo;&lsaquo;</a>

<a href="viewthread.php?tid=348556&amp;extra=page%3D1&amp;page=4" class="next">&rsaquo;&rsaquo;</a>

 3、去掉其中变化的部分,选取特征码如下:

 

class="prev">&lsaquo;&lsaquo;</a>

class="next">&rsaquo;&rsaquo;</a>

4、在无分页的帖子中搜索,未发现这两个特征码;在尾页中搜索,未发现特征码‘class="next">&rsaquo;&rsaquo;</a>’;在任意中间分页中搜索,都具备这两个特征码,因此填写分页特征码如下:


(图示6)

 

 

3、参考范例二

以采集某图片网站(见采集规则分页范例-逻辑方式非主流图片)为例:

 

1、该网站文章分为有分页的,和无分页的两种,当分页网址越界时,会显示‘无法找到该页’的错误提示,因此,我们只需要填写[有效分页特征码]即可;

 

2、通过查看各个分页,我们找到了多个可以作为特征码的字符串,我们选用其中一组,填写如下:

 


(图示7)

 

 

 

 

相关主题

1、数据项采集处理顺序

2、ET内部运算标记注解