信息采集系统的技术实现
信息采集系统指的是按标准格式采集指定网络信息,同搜索引擎的区别在于其采集的目的性更强,采集源范围也比较小。这里简单介绍一下信息采集系统实现上的几个关键问题:
1) 采集网页数据
VC,Java,VB的网络通讯功能都足够实现信息采集,VC中的Get/Post方式可采集网页信息,也可以直接用socket方式采集,但一般用前一种模式,另外为了提高采集效率都采用多线程技术,在网上的一些Spider程序都是多线程的,可以借鉴.
2) 如何按关键字来信息
信息采集的一大特点是按多个关键字将信息拆分出来,例如供求信息中的商机标题、联系人、电话、Email、内容等,实现时需要事先定义好这些关键字,然后在网页中搜索,将夹在两个关键字当中的信息采集出来,另外还要注意,网页中的许多关键字是包含空格的,空格数量也不能确定,例如"邮 件",这就要求在查找关键字时要把关键字按单个汉字拆开来匹配,遇到中间的空格要跳过去.这一步实现了,信息就会变的非常有规则,也就可以导入本地库了.
3) 网页中的链结获取算法
了解HTML的应该清楚,网页中的链结都是通过的标签定义的,但也会分很多情况,例如: < a href = "..."> 这是常见的链结格式,但要注意采集出来的链结可能是完整的http://...,也可能是相对路径,要分别处理; < a href = ''> 用单引号分隔的,所以用算法获取链结的时候要根据双引号和单引号两种标记来分隔;< a href = .. onclick = javascript:view('..','')> 通过javascript的函数处理链结,算法上就麻烦了许多。
4) 无效数据的过滤
即使通过关键字的方式摒弃了许多广告信息,但在关键字信息中也会有不少无效数据,包括一些信息开头的空格
5) 特定数据的获取算法
Email,电话等数据符合一定的规范,一般可以用一些算法提取出来,也可以用正则表达式技术来获取,在网络上有不少此类算法.在信息采集中,Email和电话等关键信息是比较分散的,需要用提取算法把这些信息提取出来放在正确的位置.这是非常有必要的,因为信息采集系统往往会有邮件群发的功能.
信息采集的整个流程可总结如下:
a) 首先,获取网页的完整信息
b) 用算法获取网页中的正文信息,即抛弃HTML的标签文本
c) 去除多余的空行
d) 按定义好的关键字将信息分隔开
e) 对信息进行无效数据过滤
f) 信息入本地库
g) 获取网页中的链结,对该链结从a)步骤开始重复,但注意网页中的许多链结是广告或无效的,因此要事先定义好一些链结关键字,只有包含关键字的链结才处理 |