论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
主词典
同义词词典 蕴含词词典
图4.3 词典结构
表2 倒排索引存储方法
于Socket的网络程序。
Web中的信息都是建立在HTML协议之上的,所以网络机器人在检索web文档时的第一个问题就是如何解析HTML。在解决如何解析之前,先来介绍下HTML中的几种数据。
(1) 文本
除了脚本和标签之外的所有数据。
(2) 注释
程序员留下的说明文字,对用户是不可见的。
(3) 简单标签
由单个表示的HTML标签。
(4) 开始标签和结束标签
用来控制所包含的HTML代码我们在进行解析的时候不用关心所有的标签,只需要对其中几种重要的进行解析即可。
(5) 超连接标签
超连接定义了WWW通过Internet链接文档的功能。他们的主要目的是使用户能够任意迁移到新的页面,这正是网络机器人最关心的标签。
5 系统详细设计与实现
5.1 数据库设计
本课题中采用MYSQL数据库存储相关数据,MYSQL数据库适用于中小型企业,它是一种的开源的数据库,用户可以根据自己的需要对它进行完善,它也具有较强的稳定性,也能支持很多种,能满足本课题的需要;在实现该系统的过程需要创建七个表用于数据存储;sites表用于存放web文档;links表用于存放web文档中的链接,stop_keywords用于存放停止词,停止词是指那些在文档中经常出现但又没有任何实际意义的词;keywords表用于存放关键词;categories表用于存放web文档类别;site_category表用于存放web文档类别与web文档间的对应关系;temp表用于存放待抓取的URL,另外还有未列出的三个字典表,dictionary表用于存放主词典,syn_dictionary表用于存放同义词典,con_dictionary表用于蕴含词典。
create table sites(
site_id int auto_increment not null primary key,
url varchar(255),
title varchar(255),
content text,
indexdate date,
spider_depth int default 2,
required text,
disallowed text,
can_leave_domain bool);
create table links (
link_id int auto_increment primary key not null,
site_id int,
url varchar(255) not null,
title varchar(200),
description varchar(255),
fulltxt mediumtext,
indexdate date,
size float(2),
level int);
create table stop_keywords (
stop_keyword varchar(30) primary key not null,
lang char(2))
create table keywords (
keyword_id int primary key not null auto_increment,
keyword varchar(30) not null,
index text
);
create table categories(
category_id integer not null auto_increment primary key,
category text,
parent_num integer
);
(科教论文网 lw.NsEac.com编辑整理)
site_id integer,
category_id integer
);
create table temp (
link varchar(255),
level integer,
id varchar (32)
);
5.2选取指定的web文档
首先需要建立类别,然后为每个类别选择具有特定性的URL,把它作为种子URL,搜索URL对应的web文档,通过它链接的第二层web文档也作为该类的相关web文档,各分类之间所指定的URL应具有明显的区别,如图5.1所示。
图5.1建立类别
function addcatform($parent) {
global $mysql_table_prefix;
$par2 = "";
$par2num = "";
if ($parent=='')
$par='(Top level)';
……
".$mysql_table_prefix."categories WHERE Category_ID='$row[1]'";
$result = mysql_query($query);
echo mysql_error();
if (mysql_num_rows($result)<>'') {
$row = mysql_fetch_row($result);
$par2num = $row[0];
$par2 = $row[1];
}
else
$par2 = "Top level";
……
else
echo mysql_error();
print "</td></tr></table>";
……
<br><center><table><tr><td valign=top align=center colspan=2><b>上一级: <?print "<a href=admin.php?f=6&parent=$par2num>$par2</a> > $par"?></b></td></tr>
<form action=admin.php method=post>
<input type=hidden name=f value=7>
<input type=hidden name=parent value=<?print $parent?>
<tr><td><b>类别:</b></td><td> <input type=text name=category size=40></td></tr>
<tr><td></td><td><input type=submit value=Add></td></tr></form>
5.3 为类别添加URL
这些URL对应的web文档信息将会被放在它所属的那个分类里,如图5.2所示;本课题中采用人工分类,所以对种子URL的选取和添加都是通过人工来完成;对URL选取要有强烈的针对性,以凸显各分类的特性,才能