2010.01.19 18:13 bruce:
上一章我们介绍了WizKnowledge的网页正文智能抓取功能,针对大多数 80%以上网站有效
剩下的20%要么提取不到正文,要么提取出错误的区块,要么提取得不完整
那么怎么弥补这20%呢?
没有关系,WizKnowledge提供了自定义规则功能,可以自己对某一站点的系列网页进行规则提取。
下面我们介绍一下自定义规则的使用方法
1、启动规则自定义工具
执行WizExplorer的主菜单/工具/自定义正文提取规则 菜单项

2、主界面
如下图所示,自定义的规则逻辑是
先查找网页条件,如果满足这条规则,就执行抽取,查找文章的一个或多个标记点,然后提取出来。

要定义自己的规则,就是学会怎么找到并定义网页中的特定标识
3、下面以twitter为例
场景:我想备份某人的twitter多条记录
3.1、设定匹配条件
1 先打开网站,twitter.com 找到同一类型网页的规律
twitter.com 的样式很统一,我们就用url做匹配

2 定义的规则为:URL = twitter.com
也可以写为 *.twitter.com/* 两头的*可以省略
*是通配符
如新浪博客的规律是 http://blog.sina.com.cn/s/blog_4a48b5bc0100gcmv.html
我们就可以设计 URL = blog.sina.com.cn/s/blog_*.html
我们就可以设计 URL = blog.sina.com.cn/s/blog_*.html
3 写入

4 点编辑按钮,可以测试有效性

5 除了URL匹配,还可以对网页某些特定备注进行匹配

关键字是网页中出现的内容
meta表示网页中meta标记
如:选择关键字 “_新浪博客”,会查找网页中包含“_新浪博客”的网页应用此
如:选择Meta 条件为 generator=WordPress% ,则匹配所有<Meta generator=”wordpress 2.7″>等标记的网页,%是通配符
这些对于利用通用程序wordpress、discuz等架设的网站相当有效
6 多个条件怎么办
支持逗号分隔多条规则
如: URL= *.sina.com.cn/s/,blog.sina.com.cn/m/ 表示一条到多条,是OR的关系,即:既可以是 也可以是
Meta和关键字规则,是AND的关系,即:条件必须满足所有的条件
7 优先级问题
如果一个规则是 URL=sina.com.cn/s/
另外一条是 URL=sina.com.cn/s/*.html
则优先判断详细一点的 规则二,如果找不到正文,则再选择 第一条规则
3.2、编写正文规则
我们已经让WizKnowledge知道那些网页是有规律的,现在来告诉他,这些有规律的网页中,应该提取哪些部分作为正文
1 分析网页
有很多方法可以分析网页,我们介绍几种
1)WizKnowledge自带的分析工具
点击编辑按钮弹出以下界面
我们暂且把这个界面分为 1、2、3、4、5 5个区块。
先在1区块中粘贴上目标地址的URL,点击打开在4窗口打开网页
当4窗口网页加载完成后(可能要等一下它下载完网页),在5窗口会出现整个网页的DOM(文档对象模型)树结构。
通过选择5窗口的DOM节点,会在4窗口中显示“焦点框”
一层一层的找到你认为是正文(一般叫content、body、entry)的dom节点。如上图,找到了一条正文的节点。
看3区域,就是这个正文的标记属性。
通过3的标记,我们可以写出这个网页内容标记的规则:是 span对象 class类定义为 status-body
这里存在3个参数,参数1是span,他是html的容器标签,目前支持的有常用的 div、td、table、span、img、ul等,他们都是包容内容的html标签
参数2是html标签的属性,目前支持的有 id、class等,常用的也就是这2个,因为网页程序写得规范的站点,都会对正文部分指定特殊的id或样式class。
参数3就是对应的值,如果是bbs这种多条记录,it有规律的,可以使用通配符%,如div.id=post% 表示所有id为post打头的div都是正文内容。
正文标识我们找到了,就把正文填写到2区域中。如下图

为测试我们设定的正文有哪些,我们点击“全部高亮”按钮
会发现浏览器中,所有span.class=status-body的html对象都会红框显示。
如果这些都是我们想要的,就可以点击保存,返回。
如果有不是我们需要的,说明我们还得找出特殊的标记,否则会错误提取一些非正文的部分。

返回后,内容标记1的内容就自动填写上去了。
你也可以用其他工具找到正文的标记,直接书写这种标签。
目前支持3个规则 的或(OR)操作,及一个网页规则中定义3块内容标记。
如果标记索引=0,及表示所有的记录,如我设置的twitter,所有的都是我要的内容,我就填0,如果我只要第2条,我就写2即可。
2)IE8自带的分析工具
IE8(Win7自带)中,有很好的“开发人员工具”,打开网页后,用快捷键“F12”打开
同样的操作步骤,找到你认为是内容的部分

将span.class=status-body填回去就可以了。
3)Firefox自带的分析工具
需要安装firefox调试插件“firebug” 地址:https://addons.mozilla.org/zh-CN/firefox/addon/1843
如下图,同样的操作步骤

找到标识为 div.id=articleBody 或者 div.class=articleContent
4)直接用文本编辑器看网页源码
最简单的方法就是查看html源码了。
通过查找内容中的关键字,定位到源码部分,看正文的标记是什么

可以看出,标记是span.class=entry-content
2 很多符合条件的,保留一条或多条的设置
目前支持3个规则 的或(OR)操作,及一个网页规则中定义3块内容标记。
如果标记索引=0,及表示所有的记录,如我设置的twitter,所有的都是我要的内容,我就填0,如果我只要第2条,我就写2即可。
3.3、完成一条规则的编写
定义规则和测试规则工作完成后,我们给他取个名字 如:“twitter规则”,写上你的大名

点击确定后,就保存到WizKnowledge的大脑中了。
4、检验正文提取的效果

怎么样?还不自己试试?
分类 WizKnowledge| 1个评论
