您的位置:
辉创首页
资讯中心
虫虫博客2009采集功能使用说明

虫虫博客2009采集功能使用说明

2009-12-31 17:04:56 作者:三叶虫 来源:辉创软件 浏览次数:21492


第1部分文章列表页面地址的填写
这个比较简单一些,用[page]变量代表页码即可,可以设置起始页码编号,中间递增梯度。

这里的网址可以是多个,多个频道的,可以放到一起。没有页码的直接网址,也是可以的。不一定要求[page]编号。
 


 第2部分,文章列表网址的提取
这里也是比较容易配置的。一般就是一行链接代码,把其中的href链接网址部分,用(.*?)代替即可,超链接标签<a></a>之间有文本标题的用.*?代替即可。本软件采集规则适用的都是标准的正则表达式写法,前后的括弧表示这是提取出来的一个参数。其实不一定是(.*?),其它的写法例如([^"]*)也是可以的。
注意正则表达式是严格匹配的,不要带多余的字符,空格。特别注意前后的空格和换行,如果源代码里面没有,这里就不能有。是什么就是什么,不要带了多的符号,多一个空格或者换行都可能导致匹配不上。
 
 

第3部分,文章标题和正文的提取
这部分是最难的。其实也不难,就是找出标题前后的特征,正文前后的特征。然后组合起来就是了。

标题一般情况下都是可以用(.*?)代替,这个正则表达式的意思是在同一行上,匹配所有字符(不包括换行符),除了碰到他后面的字符串了。

正文一般情况下都可以用([\s\S]*?)来代替,这个表达式的意思是匹配所有字符(包括换行的,因为正文里面有可能包括换行符号),除了碰到他后面的字符串了。加了括弧的正则表达式,代表作为参数要提取出来使用,如果源代码里面标题在前面,就选“标题在前”,否则就选“标题在后”。这里只允许2个加括弧的正则表达式,其它部分也可以存在正则表达式,但是不需要提取出来使用,也就不能加括弧了。

加至于正文和标题中间,一般都可能有很多无关代码内容,统一可以用[\s\S]*?代替,这个是不加括弧的。

下图截取的是新浪社会新闻的提取规则:
<h1 id="artibodyTitle".*?>(.*?)</h1> [\s\S]*? <!-- 正文内容 begin -->([\s\S]*?) <!-- 正文内容 end -->
其中红色的带括弧的就是标题和正文,前后都是特征,中间有个蓝色的 [\s\S]*? 这个代表了任意字符串,也就是代表标题和正文中间间隔的所有其它字符串。 因为这些中间的内容我们是不想要的,不需要提取,自然就不能加括弧了。

附:
在第三部份栏目中,有些采集规则可能涉及到通配符\s+的,在这里我简单说说它的用法:
当我们在采集某个标签时,可能会因为需要而连带着采集到在它的上或下行某个标签,如:
<p>正文标题</p>
<span>
那么在匹配此采集规则时,则应该在</p>后面加上通配符\s+,如:<p>(.*?)</p>\s+<span>

另外,考虑到本采集规则比较严格,在第三栏这匹配采集规则时,各个标签和通配符之间最好不要留有空格或者换行,如:
<p>(.*?)</p>\s+<span>[\s\S]*?<div class=“view”>([\s\S]*?)<div class=“infopagebox”>

在软件自带的discuz官方论坛的采集规则里面,出现过
<td class=”t_msgfont” id="postmessage_\d+">这样的表达式,这里蓝色的\d+也是代表数字,因为源代码里面他是变动的不是固定的。这种情况如果使用固定前后标识是无法采集的,只能使用正则表达式。


接下来以采集电子商务理论知识网站http://www.lusin.cn的内容为例,讲解完整的步骤:
    第一部分,采集的网址是http://www.lusin.cn/ebjichu/lilun/,由上面的翻页页面可以看出,第二页到第十二页的网址是http://www.lusin.cn/ebjichu/lilun/index[page].htm, [page]从2到12。
那就填写http://www.lusin.cn/ebjichu/lilun/和http://www.lusin.cn/ebjichu/lilun/index[page].htm这两个网址即可!

 
第二部分,查看一下列表页面的源码,很容易看到文章也网址列表的规则,表达式没什么难度,就是: <dt><a href="(.*?)">.*?</a></dt>
 
第三部分,随便打开一个内容页面,例如http://www.lusin.cn/ebjichu/lilun/2006-6-27/11118.htm,查看源代码,寻找标题和正文内容的前后特征是什么。先看紧靠正文前面标题,就是:
<div id="main">
<div id="title">长尾理论(The Long Tail)</div>
<div id="tart">
那么对应的表达式就是<div id="title">(.*?)</div>
继续看正文部分前后的特征是什么,前后分别是:
<div id="content">
</div>
好了,我们现在把整个表达式组合起来,标题和正文中间的,还是用[\s\S]*? 来代替。整个的正则表达式就是:
<div id="title">(.*?)</div>[\s\S]*?<div id="content">([\s\S]*?)</div>


   第4部分,文章采集过程
采集过程中,红色表示正在采集,后面的是采集结果篇数。
 

采集任务完成或者停止之后,采集的文章会直接显示在文章列表树形上面并保存在对应文件夹。
 

注意如果采集数量太多,超过几万篇,启动软件的时候可能比较慢,树形节点的操作也可能卡。出现这种情况的时候,可以手工把安装目录下面的articles目录里面的采集文章结果移走一些,放到别的地方。