您的当前位置:首页正文

web网站信息采集系统的设计方案

来源:个人技术集锦
龙源期刊网 http://www.qikan.com.cn

web网站信息采集系统的设计方案

作者:叶 君

来源:《硅谷》2008年第22期

[摘要]讨论利用.Net技术、数据库技术,设计Web网站信息的采集系统,并以某人才网站招聘信息的采集为例,说明实现过程。提出基于Web的信息采集系统的设计方案,并利用.Net技术与数据库技术,实现对特定网站信息的采集与处理。 [关键词]信息检索 WEB技术 ADO.NET

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1120081-01

随着WWW的发展,搜索引擎所提供的搜索和导航服务已经成为互联网上非常重要的网络服务,它的特点是能够帮助我们很快找到所需的网站或资料。本文讨论利用.Net技术、数据库技术,设计Web网站信息的采集系统,并以某人才网站招聘信息的采集为例,说明实现过程。

一、信息采集系统的设计

(一)采集系统设计的思路

首先,要采集指定网站的信息,必须了解信息的浏览方式,并记录相应的访问路径。大多数网站采用动态网页技术(ASP、PHP等)构建,通过参数传递来检索数据库,输出对应信息的。

第二,采集所获的信息必须存入本地数据库,需要对几个目标网站上的信息进行比较与分析,得到统一的数据模型,并设计相应的数据表,便于将来对不同网站采集来的信息统一进行结构化。

第三,考虑到可能会对网站进行多次采集,要避免重复的信息存入自己的数据库内,同时重复处理已经存在的信息也会降低采集系统的工作效率。因此可以在记录每条信息的同时,记录其对应的URL或相关ID,便于验证链接是否已经访问过。 (二)相关的技术

龙源期刊网 http://www.qikan.com.cn

1.请求/响应模型。Web应用是基于HTTP协议的客户端/服务器请求响应机制的信息交换,当我们在浏览器输入一个网址,需要经过建立连接、发送请求、发送响应、关闭连接4个步骤,才能获得网页信息。

在.Net框架的命名空间System.Net中提供了两个类WebRequest和WebResponse,分别用来发送客户端请求和获取服务器返回的响应。

2.正则表达式。正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的模式匹配可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;或将提取的字符串添加到集合。

在.Net的命名空间System.Text.RegularExpressions提供Regex类构建正则表达式,同时还提供了相应的方法完成对字符串的匹配和过滤。

3.ADO.Net。采集系统得到的数据最终都要存入本地数据库,在.NET框架中提供了数据库访问技术ADO.NET。它屏蔽了各类数据源之间的差异,以统一的接口进行访问,由一组访问各类数据源的类构成。为提高访问效率,还为SQL Server提供了专用类,SqlConnection、SqlCommand、SqlDataReader、

Dataset、SqlDataAdapter等,完成对SQL Server数据库的访问与数据处理。 (三)算法描述

要完成信息的采集,首先要能够在页面中过滤出我们所需要的链接起点,然后系统模拟人工点击流程来读取信息。

1.根据访问路径创建一个C#自带的REGEX类的对象,该类是用来进行正则表达式的匹配文本类。

2.通过WebRequest发送请求,WebResponse接取返回的响应,再通过StreamReader读取返回的响应,形成包含网页所有源码的字符串。

3.对该字符串用正则表达式进行匹配,得到MatchCollection集合,存放了所有我们需要进一步读取的目标链接。

4.遍历集合的成员,访问成员链接所指向的页面,由StreamReader读取信息后,使用正则表达式提取页面信息。

二、人才招聘信息采集系统的实现

龙源期刊网 http://www.qikan.com.cn

(一)读取招聘单位列表信息

打开web_url指定的网站页面,并通过StreamReader对象读取网页源代码存入字符串all_code中,便于正则表达式提取。

HttpWebRequestall_codeRequest=(HttpWebRequest)WebRequest.Create(web_url); WebResponseall_codeResponse=all_codeRequest.GetResponse();

StreamReaderthe_Reader=newStreamReader(all_codeResponse.GetResponseStream(),System.Text.Encoding.Default);

stringall_code=the_Reader.ReadToEnd(); the_Reader.Close();

(二)提取招聘单位的超链列表

创建表达式字符串p,用它创建正则表达式对象re,并使用re.Matches方法返回all_code字符串所有匹配的超链集合hy。 stringp=@\".+\";

Regexre=newRegex(p,RegexOptions.IgnoreCase); MatchCollectionhy=re.Matches(all_code); for(inti=0;i {….//读取单位信息

…//获得每个招聘单位发布的岗位链接集合gw for(intj=0;j

{…//使用正则表达式过滤,读取岗位招聘人数、有效时间、学历要求等 …//信息存入本地数据库相关表中}} (三)信息存入本地数据库

龙源期刊网 http://www.qikan.com.cn

为将信息存入本地数据库对应的表,在SQL Server中设计了一个存储过程InsertJobs,用来解决相应的数据插入问题。其中webid中存放ID是目标网站用于区分岗位的标识,InsertJobs根据其检查该岗位是否需要插入数据库,保证数据不重复。 SqlCommandcmd=newSqlCommand(\"InsertJobs\ cmd.CommandType=CommandType.StoredProcedure;

try{cmd.Parameters.AddWithValue(\"@companyname\ ……//招聘岗位信息

cmd.Parameters.Add(\"@webid\记录岗位ID cmd.Parameters[\"@webid\"].Value=Convert.ToInt64(jid); cmd.ExecuteNonQuery();} catch(Exception){continue;}

三、结束语

利用该设计方案,我们成功地对某人才网的信息进行了采集;其实,只需适当修改,就可用于采集其他特定网站的信息。由于针对特定的网站进行信息采集,并不需要像搜索爬虫一样对整个网站进行扫描,所以采集的速度比较快。

参考文献:

[1]张帆,基于Web的智能信息采集及处理系统设计与实现[J].计算机工程. 2007.(18). [2]徐远超,基于Web的网络爬虫的设计与实现[J].微计算机信息.2007(21). 作者简介:

叶君,男,四川什邡人,本科,助教,从事WEB程序开发研究。

龙源期刊网 http://www.qikan.com.cn

因篇幅问题不能全部显示,请点此查看更多更全内容