RuiJi.Net RuiJi 表达式进阶

      RuiJi.Net RuiJi 表达式进阶已关闭评论

多个选择器

这里我们以抽取出栏目名称为例,假设一个页面的栏目的源码如下

<td>
    <div style="width:616px; float:left;" class="f12 black">
	 <ul style="margin:0; padding:0;">
	  <li style="float:left; width:120px; text-align:right;">法制网首页&gt;&gt;</li>
	  <li style="float:left; width:350px; text-align:left;">
              <span style="padding:5px 0px 5px 15px;">
	        <a href="../../../node_34228.htm" target="_blank" class="f12 black">评论频道</a>
                <font class="f12 black">&gt;&gt;</font>
                <a href="../../../node_34252.htm" target="_blank" class="f12 black">法治时评</a>
	      </span>
            </li>
	 </ul>
    </div>
</td>

我们使用如下的RuiJi表达式对栏目进行抽取,同时需要去除 法制网首页>> 的文本,那么选择器定义可以如下

[meta]
#railling
css div.f12:text
ex /\s+法制网首页>>/ -b
regR />>/ >

在这里第一个选择器首先选择出div.f12的文本,结果如下

 法制网首页>> 评论频道>>法治时评

然后使用排除选择器在文本开始部分排除掉 法制网首页>> (-b是排除开始文本的意思) 得到结果如下

 评论频道>>法治时评

再次我们需要将 >> 替换为 > 最终结果如下

评论频道>法治时评

当然我们也可以这样去抽取栏目

[meta]
#railling
css div.f12 span:text
regR />>/ >

这与上面的结果是一致的。

类型转换

RuiJi.Net 的抽取器可以将选择器处理结果转换为目标数据类型,类型转换是透过在抽取器名称后加后缀完成的,以下列表为抽取器名称可用后缀及其转换类型

后缀 目标转换类型
*_i int
*_s string
*_l long
*_b bool
*_f float
*_d double
*_dt datetime

如果不指定后缀,抽取器会默认返回字符串类型,如果转换发生异常,抽取器同样会返回字符串类型

以下为一个简单的示例

[meta]
#title
css .blog-title-link[title]

#author
css .blog-footer-box > span:first:text

#postdate_dt
css .blog-footer-box > span:eq(2):text

#reads_i
css .blog-footer-box > span:last:text
regS / / 1

Paging抽取器

Paging抽取器是一个特殊的抽取器,它被用来抽取页面的分页,Paging抽取器的抽取结果必须为链接地址,Paging选择器会自动按照链接出现的顺序抽取页面数据,并将[meta]中的content字段进行合并,Paging抽取器通常用于具有分页的详细页面。

[block]

......

[meta]
......

#content
css .a-con:ohtml

[paging]
css .a-page
css a[href]

您需要保证所抽取的页面为分页的第一页,否则分页的合并结果可能不正确

© 2018, RuiJi 社区. 版权所有.转载请注明出处