网页存储格式说明
Web InfoMall网页存储格式说明(V1.0)
北大网络实验室
2003年4月
1前言
网页的存储格式应当设计为适合长期保存并易于处理,可以作为终端产品提供给用户使用。网页库很可能只有一个备份,为确保数据不致于在处理过程中因程序错误而丢失,还应当适当为程序员考虑,使得程序员容易根据该格式写出不会破坏数据的程序。这就要求网页的存储格式应具备简单性的特点。
由于存储介质都是有寿命的,所以应当考虑当存储介质损坏时数据的可恢复性。例如:磁盘的某个扇区损坏,导致部分数据不能读出,如果剩下的数据仍然可以使用,就能将损失降到最少。对于海量数据来说,在存储和传输的过程中,由于硬件和软件问题导致数据错误也是不可避免的。因此,网页的存储格式还应当具备容错性的特点。
2基本存储格式定义
根据以上考虑,提出基本存储格式定义如下:
阴阳合同
1)一个网页文件(RAW DB)由若干记录组成,每个记录(RECORD)包含一个网页的
原始数据,记录的存放是顺序追加的,记录之间没有分隔符;
2)一个记录由头部(HEAD)和网页内容(DATA)和空行(BLANK LINE)组成,顺序
是:头部+空行+网页内容+空行;
3)一个头部由若干属性(PROPERTY)组成,每个属性是一个非空的行,头部内部不
允许出现空行;
4)一个属性包含属性名(NAME)和属性值(VALUE),并由冒号``:''隔开,顺序是:属
性名+冒号+属性值+换行字符(一个字节,不包括回车字符);
5)头部的第一个属性必须是版本号,属性名为:version,例如:version:1.0,该属性
表明记录的版本号;
6)头部的最后一个属性必须是网页内容的长度,属性名为:length,例如:length:
1800,该属性值必须是网页内容(DATA)的长度(字节数),不包括网页内容前后的空行;
7)为简化起见,属性名必须是小写的字符串;
8)空行(BLANK LINE)由且仅由一个换行字符(一个字节,不包括回车字符)组成。
消毒液品牌注:一个空行(BLANK LINE)仅由一个换行符LF(即c编程语言中的``\n'')组成,因表现为一个空行(当前面的数据也以换行结束时),所以称为空行。Microsoft Windows 系统和UNIX系统在换行机制上有所区别:在Windows系统下,一个换行由一个回车符
CR和一个换行符LF组成(即c编程语言中的``\r\n'');而在UNIX系统中一个换行仅由一个换行符LF组成。这里采用UNIX系统的换行机制。
3当前存储格式版本描述
考虑到网页保存将是一个长期的过程,将来难免会有新的需求,因此存储格式允许有多个版本,以满足将来进行扩展的需要。
当前存储格式的版本属性为1.0。一个记录的存储格式如下(//后为注释):version:  1.0//版本号
url:www.pku.edu///URL
origin:www.somewhere///原来的URL
date:Tue,15Apr200308:13:06GMT//抓取时间
ip:162.105.129.12//IP地址
unzip-length:30233//如果网页内容经过压缩,则需有此属性
length:18133//网页内容长度
//空行
着多音字组词XXXXXXXX//以下为网页内容
XXXXXXXX
路由器密码修改
……
XXXXXXXX//网页内容结束
//最后再插入一个空行
基金赎回几天到账
各属性说明:
-网页内容是指根据HTTP协议Web服务器所返回的完整的网页数据,包括HTTP 状态码、HTTP-HEAD、HTTP-CONTENT等部分。若非特殊原因不应予以修改,而应尽量保持原始的状态。
-version属性为版本号,以下说明适用版本号为1.0的情况。
-url指该网页的URL,如果因为HTTP-HEAD中包含Location字段而产生网页转向时,该URL为最后实际抓取的URL地址。该属性是必需的。
-origin指该网页的原始URL。该属性仅在因HTTP-HEAD中包含Location字段而产生网页转向时存在,指向最初的URL。
-date属性为该网页被抓取时的本地时间,保存格式为RFC822所制定的格式。该属性是必需的。
-ip属性为该网页所在服务器的IP地址。该属性原则上是需要的,应尽量填写,如果确实未知,可以省略,或赋值``unknown''。
-unzip-length属性仅在网页经过压缩时存在,记录网页内容未压缩时的原始长度。
当前版本并不指定网页内容是否必须经过压缩。但是采用压缩格式时必须包含unzip-length属性而未采用压缩格式时不能包含该属性。如果必要,应当附加文件说明压缩算法,必要时附带压缩函数库及源代码。
大江大河每个人的结局-length属性记录网页内容的长度(字节数),不包括前后的空行。
若有特殊需要用户可以自行添加属性,应用程序在处理未知属性时可以简单地忽略。
4数据的可恢复性分析
假设由于数据遭到破坏,只得到其中一个残存的片段。则可按以下步骤出该残存片段中所有完整的记录:
1.寻特定字符串``version:'',除非没有一个完整的记录,该字符串肯定能到。记
录该字符串的位置POS。
2.到该字符串后,判断其后的数据是否满足本文第2节中规定的存储格式2),3),4),
6),7)条件。如果任何一个条件不满足,返回1,从记录的位置POS开始继续查下
一个特定字符串``version:''。
3.当满足条件2时,假定这是一个正确的记录,则下一个记录也必定是一个正确的记
录。检查该记录是否满足本文第2节中规定的存储格式2),3),4),5),6),7)条件,如果任何一个条件不满足,说明原先的假定错误,返回1,从记录的位置POS开始,继续查下一个特定字符串``version:''。如果条件都满足,则继续检查下一个记录是否正确。
4.如果连续3个记录格式都是正确的,则认为1所到``version:''是一个正确的记录
的开始,可以依此提取出全部正确的网页。由于网页数据是随机的,而存储格式是严格的,因此经过上述方法得到的记录为错误记录的可能性极小,是完全可以接受的。
5其它问题
1.文件打开模式:文件有两种打开模式:文本(Text)模式和二进制(Binary)模式。读写原始网页库文件时,应以二进制模式打开。在Windows系统中,如果以文本模式打开,可能会产生读数据时``\r\n''被替换为``\n''的现象,导致数据错误。
2.Ftp传输:Ftp传输也有两种传输模式:文本(Text)模式和二进制(Binary)模式。传输原始网页库文件
时,应以二进制模式进行传输。如果以Text模式传输,可能会出现``\r\n''被替换为``\n''或``\n''被替换为``\r\n''的现象,导致数据错误。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。