多个选择器
这里我们以抽取出栏目名称为例,假设一个页面的栏目的源码如下
<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;">法制网首页>></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">>></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]
您需要保证所抽取的页面为分页的第一页,否则分页的合并结果可能不正确