CN102043862B - 网页数据定向抓取方法 - Google Patents

网页数据定向抓取方法 Download PDF

Info

Publication number
CN102043862B
CN102043862B CN201010612405A CN201010612405A CN102043862B CN 102043862 B CN102043862 B CN 102043862B CN 201010612405 A CN201010612405 A CN 201010612405A CN 201010612405 A CN201010612405 A CN 201010612405A CN 102043862 B CN102043862 B CN 102043862B
Authority
CN
China
Prior art keywords
data
web
locator field
location
extracted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201010612405A
Other languages
English (en)
Other versions
CN102043862A (zh
Inventor
史寿伟
李龙
向涛
李友良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Super Body Technology Co ltd
Original Assignee
CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD filed Critical CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD
Priority to CN201010612405A priority Critical patent/CN102043862B/zh
Publication of CN102043862A publication Critical patent/CN102043862A/zh
Application granted granted Critical
Publication of CN102043862B publication Critical patent/CN102043862B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种网页数据定向抓取方法,该方法利用待抓取的网页数据在网页文件中呈现的数据结构特征,对网页文件进行源代码语法规则分析,再通过正则表达式构建具有数据结构特征的数据匹配模型,对网页文件源代码进行数据匹配,并从中匹配的部分源代码提取出需要抓取的网页数据,解决了网页数据的定向抓取问题;本发明方法采用正则表达式作为匹配工具,对本领域技术人员而言具有很强的可操作性,有利于本发明方法的普及应用;针对一些数据结构特征较为复杂、提取难度较高的网页数据,本发明还提出了一种通过多级定位逐级提取待抓取的网页数据的定向抓取方案,体现了本发明方法具有较强适应能力,应用范围广泛。

Description

网页数据定向抓取方法
技术领域
本发明涉及网络技术和搜索引擎技术领域,特别涉及一种网页数据定向抓取方法。 
背景技术
随着网络技术的迅速发展,万维网成为当今传输数量最大、传输效率最高的信息数据传输载体,如何有效的从万维网中获取需要的信息数据以及对海量信息的利用,成为网络技术、通信技术领域研究的热点课题。 
网络蜘蛛(也称为网络爬虫、网络机器人),即按照既定程序从万维网中抓取网页数据的软件技术,成为从万维网中获取需要的信息数据的主要应用技术;这里所述的网页数据,是指用于呈现于网页中、为用户提供有效信息的标题、文本、图像、链接、表格等各类型的数据。例如百度、谷歌等搜索服务网站的搜索引擎,就需要依靠网络蜘蛛从万维网中抓取各种网站的网页数据。但是,搜索引擎应用的网络蜘蛛对其抓取的网页数据是不加区分和鉴别的,需要依靠用户自己定义检索的范围并确定最终要获取的数据,也就是说获取网页数据的定向操作需要人为完成。随着社会分工的专业化,人们对网络信息服务的要求不断提高,很多情况下人们需要一种能够对其感兴趣的网页数据进行自动定向抓取的数据抓取技术,而现有搜索引擎所应用的网络蜘蛛并不能满足这样的要求。 
利用现有的网络技术条件,实现网页数据的定向抓取,可以通过以下三种策略: 
第一种:与网页数据的网站经营方进行商务沟通,请该网站经营方提供专用的网页数据抓取接口;
第二种:如果网页数据的网站经营方支持RSS(Really Simple Syndicatio,简易共享内容聚合)聚合,则可以通过RSS接口通过共享定向抓取网页数据;
第三种:通过一种具有定向功能的特殊网络蜘蛛,直接从网页内容中抓取网页数据。
上述的前两种方式需要网页数据获取方与网站经营方取得商业合作才能够得以实现,对网页数据获取方具备较高的商业公关能力,而且这两种方式受到商业合作往来的局限,不能提供出商业合作方以外的网页数据定向抓取,应用领域非常有限。第三种方式对网页数据获取方的商业公关要求较低,只要具备相应的定向抓取技术,就能够对万维网中的任意网页数据进行定向抓取,而不受到商业公关的局限,因此适用的网页数据定向抓取技术成为第三种方式实现的关键和难题。 
发明内容
针对现有技术中存在的上述不足,本发明提供一种网页数据定向抓取方法,解决网页数据的定向获取问题。 
为实现上述目的,本发明采用了如下技术手段: 
作为一种方案,网页数据定向抓取方法,包括以下步骤:
1)根据待抓取的网页数据在网页文件中具有的数据结构特征以及网页文件的源代码语法规则,编译由正则表达式构建的数据匹配模型;
2)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码;
3)用所述数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码;
4)从所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出待抓取的网页数据;
5)对提取出的网页数据进行存储处理。
在第一种方案中,所述由正则表达式构建的数据匹配模型是由结构匹配字符和捕获组构成;所述结构匹配字符用于匹配待抓取的网页数据的数据结构特征;所述捕获组用于匹配待抓取的网页数据。 
在第一种方案中,所述步骤3)中“从所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出待抓取的网页数据”,是通过正则表达式语法规则中的捕获组对所述相匹配的部分源代码中待抓取的网页数据进行捕获并存储于缓存区中,从而屏蔽结构匹配字符匹配的数据结构特征部分;再从缓存区中提取待抓取的网页数据。 
在第一种方案中,所述待抓取的网页数据有多组,每组待抓取的网页数据匹配于数据匹配模型中的一个捕获组,且不同的捕获组通过不同的编号或命名加以区分识别。 
在第一种方案中,所述步骤4)中“对提取出的网页数据进行存储处理”,是计算提取出的网页数据的MD5值,并查找数据库中是否存在相同的MD5值;若是,则放弃存储操作;否则,将提取出的网页数据连同其MD5值一起存入数据库,并建立该网页数据与其MD5值的对应关系。 
作为另一种方案,网页数据定向抓取方法,包括以下步骤: 
A)将待抓取的网页数据在网页文件中具有的数据结构特征拆分为N级,划分N级定位域;每一级定位域包含至少一个待抓取的网页数据的数据结构特征,以及除数据结构特征部分的定位提取部分;其中,第N级定位域的定位提取部分即为待抓取的网页数据,N≥2;
B)根据网页文件的源代码语法规则,分别编译由正则表达式构建的每一级定位域的数据匹配模型;
C)通过多级定位的方式逐级提取待抓取的网页数据;该步骤具体为:
c1)第1级定位步骤包括:
11)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码;
12)用第1级定位域的数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码;
13)从步骤12)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第1级定位域的定位提取部分;
c2)第n级定位步骤,2≤n≤N,包括:
n1)获取第n-1级定位域的定位提取部分;
n2)用第n级定位域的数据匹配模型对第n-1级定位域的定位提取部分进行数据匹配,依次获取相匹配的部分源代码;
n3)从步骤n2)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第n级定位域的定位提取部分;
其中,第N级定位步骤提取出的定位提取部分,即为待抓取的网页数据;
D)对第N级定位步骤提取出的网页数据进行存储处理。
在第二种方案中,所述由正则表达式构建的每一级定位域的数据匹配模型,均是由结构匹配字符和捕获组构成;所述结构匹配字符用于匹配定位域中的数据结构特征部分;所述捕获组用于定位域中的定位提取部分;不同级定位域的数据匹配模型中的捕获组,通过不同的编号或命名加以区分识别。 
在第二种方案中,所述步骤13)中“从步骤12)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第1级定位域的定位提取部分”,是通过正则表达式语法规则中的捕获组对步骤12)所述相匹配的部分源代码中第1级定位域的定位提取部分进行捕获并存储于缓存区中,从而屏蔽结构匹配字符匹配的数据结构特征部分;再从缓存区中提取第1级定位域的定位提取部分; 
所述步骤n3)中“从步骤n2)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第n级定位域的定位提取部分”,是通过正则表达式语法规则中的捕获组对步骤n2)所述相匹配的部分源代码中第n级定位域的定位提取部分进行捕获并存储于缓存区中,从而屏蔽结构匹配字符匹配的数据结构特征部分;再从缓存区中提取第n级定位域的定位提取部分。
在第二种方案中,所述待抓取的网页数据有多组,每组待抓取的网页数据匹配于第N级定位域的数据匹配模型中的一个捕获组,且不同的捕获组通过不同的编号或命名加以区分识别。 
在第二种方案中,所述步骤D)中“对第N级定位步骤提取出的网页数据进行存储处理”,是计算第N级定位步骤提取出的网页数据的MD5值,并查找数据库中是否存在相同的MD5值;若是,则放弃存储操作;否则,将第N级定位步骤提取出的网页数据连同其MD5值一起存入数据库,并建立该网页数据与其MD5值的对应关系。 
相比于现有技术,本发明具有如下有益效果: 
1、本发明利用待抓取的网页数据在网页文件中呈现的数据结构特征,对网页文件进行源代码语法规则分析,再通过正则表达式构建具有数据结构特征的数据匹配模型,对网页文件源代码进行数据匹配,并从中匹配的部分源代码提取出需要抓取的网页数据,解决了网页数据的定向抓取问题。
2、运用正则表达式进行字符段匹配的技术在网络技术领域中应用成熟,本发明方法采用正则表达式作为匹配工具,对本领域技术人员而言具有很强的可操作性,有利于本发明方法的普及应用。 
3、利用正则表达式语法规则中的捕获组对待抓取得网页数据或定位域中的定位提取部分进行捕获提取,充分利用正则表达式的语法规则,且操作简便;还可采用多个不同命名的捕获组分别匹配捕获多组待抓取得网页数据,应用灵活。 
4、针对一些数据结构特征较为复杂、提取难度较高的网页数据,本发明还提出了一种通过多级定位逐级提取待抓取的网页数据的定向抓取方案,体现了本发明方法具有较强适应能力,应用范围广泛。 
5、通过MD5摘要效验的存储处理方式,可以避免数据库中重复存储所抓取的相同的网页数据,节省数据库的存储资源。 
附图说明
图1为本发明方法中第一种方案的流程框图; 
图2为本发明方法中第二种方案的流程框图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。 
由于标题、文本、图像、链接、表格等各类型的网页数据,其呈现于网页中,必定具备一定的数据结构特征,如不同类型数据的组合结构、同类型数据的排列结构、数据内容的描述结构等等。本发明的网页数据定向抓取方法,就是利用网页数据呈现的数据结构特征,对网页文件进行源代码分析,通过正则表达式匹配得到具备待抓取网页数据的数据结构特征的部分源代码,进而提取出待抓取的网页数据,达到网页数据定向抓取的目的。下面通过实施例对本发明的实际应用和效果做进一步说明。 
实施例1:
为了向用户提供蔬菜价格信息服务业务,提供相应业务的服务器需要从某专业的物价信息网站中定向抓取蔬菜价格数据。该物价信息网站中包含的网页文件均为HTML(Hyper Text Markup Language,超文本语言)格式;包含蔬菜价格信息的网页的URL(Uniform Resource Locator,统一资源定位符)地址为“http://www.feinno.com/commodity-price/016”,该网页中蔬菜价格呈现为如表1所示的表格结构:
表1
Figure 2010106124052100002DEST_PATH_IMAGE001
在表1中,“蔬菜价格”所在单元格为表头单元格,其它单元格为数据单元格。现在,需要为用户专项的提供“青椒”价格报价服务,因此服务器需要从该网页中定向的抓取青椒的价格数据,忽略掉网页中的其它网页数据;采用本发明方法进行定向抓取,其流程框图如图1所示,具体的方法如下:
1)根据待抓取的网页数据在网页文件中具有的数据结构特征以及网页文件的源代码语法规则,编译由正则表达式构建的数据匹配模型;
待抓取的青椒价格数据,在网页文件中呈现为表格结构,且表格为多行多列排列结构,根据表格结构在HTML源代码语法规则,至少应当包含表格标签“<table>”、表行标签“<tr>”、数据单元格标签“<td>”;但仅仅有表格结构特征还不够,注意到该表格中还存在其它的蔬菜价格数据,且与青椒价格数据呈现的表格结构特征相同,因此还需要将“青椒”作为数据内容特征;因此,根据HTML源代码语法规则已经可以确定,在由正则表达式构建的数据匹配模型中,必定包含匹配语句“<tr> <td> 青椒 </td>  <td> …… </td> </tr>”。前述的匹配语句中,省略号的位置即为青椒价格数据在HTML网页文件源代码中的位置,但该数据可能会随时变动,为尚不能确定的内容;对于匹配过程中尚不能确定的内容,在本实施例中,由通过正则表达式编译定义的通配符来代替,该通配符的标记定义为“/Wildcard/”。
由此,编译得到的青椒价格数据的数据匹配模型,其正则表达式形式为: 
“<tr> <td> 青椒 </td>  <td> /Wildcard/ </td> </tr>”。
2)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码; 
由包含蔬菜价格信息的网页的URL地址“http://www.feinno.com/commodity-price/016”,可以通过万维网获取到该HTML格式的网页文件,然后通过文件解析获得网页文件的源代码。HTML格式的网页文件的源代码解析技术是非常成熟的技术,可以通过专用的HTML解析工具来实现;此外,借助现有网页浏览器(例如Windows系统自带的IE浏览器)具备的“查看源文件”功能,也能够获取到网页文件的源代码。通过HTML解析,解析到该包含蔬菜价格信息的网页文件中含有如下的表格数据源代码:
“……
<table width="30%" border="1">
<tr> <th colspan="2">蔬菜价格</th> </tr>
<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>
</table>
……
……”。
3)用所述数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码; 
根据正则表达式的匹配规则,用数据匹配模型“<tr> <td> 青椒 </td>  <td> /Wildcard/ </td> </tr>”匹配上述步骤2)中解析得到的网页文件源代码,获取的相匹配的部分源代码如下:
“<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>”。
4)从所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出待抓取的网页数据; 
在匹配获得的部分源代码中,青椒的价格数据“1.50元/500克”才是需要抓取的网页数据;“<tr> <td> 青椒 </td>  <td>”以及“</td> </tr>”只是青椒价格数据的数据结构特征部分,需要被屏蔽掉。现有技术中常用的数据屏蔽方法有很多,例如,可以将上述的部分源代码“<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>”与数据匹配模型“<tr> <td> 青椒 </td>  <td> /Wildcard/ </td> </tr>”进行字符对比运算,去除掉相同的字符串,最终部分源代码中剩余的部分“1.50元/500克”即为需要抓取的青椒价格数据。
5)对提取出的网页数据进行存储处理; 
直接将提取到的青椒价格数据“1.50元/500克”存入数据库中备用。从而,在向用户提供专项的青椒价格报价服务时,只需要从数据库中提取当前的青椒价格数据“1.50元/500克”发送给用户即可。
在服务业务应用中,可以采用上述的方法,周期性地从物价信息网站的相应网页中定向抓取青椒价格数据,为用户提供实时的青椒价格数据的业务。但是,在网页中被提取的相应数据没有发生改变的情况下,周期性的提取的同一网页数据可能存在数据重复的情况,例如可能很长一段时间内周期性的提取的青椒价格数据都是“1.50元/500克”;若对所提取的相同数据都不加区分的进行直接存储,必然导致存储资源的浪费。为此,作为本实施例技术方案的一种改进,在步骤5)的存储处理过程中,可采用MD5摘要效验的方式避免相同数据的重复存储。MD5(Message-Digest Algorithm 5,消息摘要算法第五版)是将一段数据当作一个文本信息整体,通过一种不可逆的字符串变换算法,对该文本信息整体进行运算产生一个唯一对应的信息摘要,即MD5摘要。相同的数据内容会生成相同的MD5值,而且MD5摘要的信息量要比其对应的数据原始信息量小很多,便于进行效验运算。在改进方案中,步骤5)的存储处理具体是,计算提取出的青椒价格数据的MD5值,并查找数据库中是否存在相同的MD5值;若是,则放弃存储操作;否则,将提取出的青椒价格数据连同其MD5值一起存入数据库,并建立该青椒价格数据与其MD5值的对应关系。运用该存储处理,当周期性的提取到的青椒价格数据未发生变化时,即放弃存储,仅当取到的青椒价格数据变化后才存入数据库,节省了数据库的存储资源;并且对应存储其MD5值,便于后期的效验的数据调取处理。 
在本实施例中,步骤4)采用了字符对比运算的方式对数据结构特征部分进行数据屏蔽。作为本实施例的又一种改进方案,可以利用正则表达式语法规则中的捕获组,让步骤4)的数据屏蔽操作更加的简化。捕获组在正则表达式语法规则中用左、右圆括号“(”、“)”进行标示,其功能是将左、右圆括号之间的子表达式所匹配的内容进行捕获并存储于缓存区中。为了从数据匹配模型匹配的部分源代码中获取青椒价格数据,可以在步骤1)中将由正则表达式构建数据匹配模型编译为: 
“<tr> <td> 青椒 </td>  <td> (/Wildcard/) </td> </tr>”;
该数据匹配模型由结构匹配字符“<tr> <td> 青椒 </td>  <td>”、“</td> </tr>”和捕获组“(/Wildcard/)”构成;结构匹配字符用于匹配待抓取的青椒价格数据的数据结构特征,捕获组用于匹配待抓取的青椒价格数据。在步骤3)中,应用该数据匹配模型对所述网页文件的源代码进行数据匹配,在相匹配的部分源代码“<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>”中,匹配于捕获组的部分“1.50元/500克”即被捕获存储于缓存区中。从而在步骤4)提取青椒价格数据时,只需从缓存区中提取匹配于捕获组的“1.50元/500克”,从而达到屏蔽数据结构特征部分的目的,不再需要再单独的进行字符对比运算等数据屏蔽处理,通过充分利用正则表达式的语法规则实现了步骤4)中运算处理流程的简化。
实施例2:
为了向用户提供蔬菜价格信息服务业务,提供相应业务的服务器需要从实施例1所述的物价信息网站的网页“http://www.feinno.com/commodity-price/016”中定向抓取蔬菜价格数据,该网页中蔬菜价格呈现方式如表1所示。现要为用户提供该表格中罗列的蔬菜名称数据以及各种蔬菜相应的价格数据,因此网页中的蔬菜名称“西红柿”、“青椒”、“胡萝卜”以及三者对应的蔬菜价格“3.50元/500克”、“2.50元/500克”、“1.50元/500克”即为待抓取的网页数据;采用本发明方法进行定向抓取,其流程框图如图1所示,具体的方法如下:
i)根据待抓取的网页数据在网页文件中具有的数据结构特征以及网页文件的源代码语法规则,编译由正则表达式构建的数据匹配模型;
待抓取的蔬菜名称数据和蔬菜价格数据,在网页文件中呈现为具有表头的表格结构,且表格为4行2列排列结构,根据表格结构在HTML源代码语法规则,至少应当包含表格标签“<table>”、表行标签“<tr>”、表头标签“<th>”、数据单元格标签“<td>”;匹配过程中尚不能确定的内容由通配符“/Wildcard/”来代替,并通过结构匹配字符匹配上述的数据结构特征部分,通过正则表达式语法规则中的捕获组对待抓取的蔬菜名称数据和蔬菜价格数据进行匹配捕获;由于存在多组待抓取的网页数据,需要多个捕获组分别匹配捕获,为加以区分,借助正则表达式语法规则中的捕获组命名规则对不同的捕获组分别命名;从而得到由正则表达式构建的数据匹配模型:
“<tr> <td> (?’name1’/Wildcard/) </td>  <td> (?’price1’/Wildcard/) </td> </tr>”;
其中“name1”、“price1”分别为数据匹配模型中两个捕获组的命名。
ii)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码; 
由包含蔬菜价格信息的网页的URL地址“http://www.feinno.com/commodity-price/016”,可以通过万维网获取到该HTML格式的网页文件,然后通过文件解析获得网页文件的源代码:
“……
<table width="30%" border="1">
<tr> <th colspan="2">蔬菜价格</th> </tr>
<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>
</table>
……
……”。
iii)用所述数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码; 
根据正则表达式的匹配规则,用上述步骤i)中的数据匹配模型匹配上述步骤ii)中解析得到的网页文件源代码,依次获取到相匹配的部分源代码有三组,分别为:
第一组:“<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>”;
第二组:“<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>”;
第三组:“<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>”。
iv)从所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出待抓取的网页数据; 
根据正则表达式语法规则中捕获组的定义,捕获组所匹配捕获的内容会按照其出现的先后顺序依次被编号存储于缓存区中,编号默认为从“0”开始;因此,通过数据匹配模型中两个捕获组对数据结构特征部分的屏蔽,捕获并存储于缓存区中的内容如表2所示:
表2
编号 命名 捕获内容
0 name1 西红柿
1 price1 3.50元/500克
2 name1 青椒
3 price1 1.50元/500克
4 name1 胡萝卜
5 price1 2.50元/500克
根据不同捕获组的编号进行区分识别,分别提取缓存区中存储的待抓取的蔬菜名称数据“西红柿”、“青椒”、“胡萝卜”以及三者对应的蔬菜价格数据“3.50元/500克”、“2.50元/500克”、“1.50元/500克”。
v)对提取出的网页数据进行存储处理; 
本实施例中,采用实施例1改进方案中的MD5摘要效验的存储处理方式,对提取的三组蔬菜名称数据和三组蔬菜价格数据分别进行MD5效验,避免数据库中重复存储相同的网页数据;对于MD5值在数据库中不存在的蔬菜名称数据或/和蔬菜价格数据,则连同其MD5值一起存入数据库。
在本实施例中,通过上述方法实现了网页中多组网页数据的定向抓取。在具体操作时,编译由正则表达式构建的数据匹配模型,也可采用六个不同命名的捕获组来分别匹配捕获三组蔬菜名称数据和三组蔬菜价格数据,即步骤i)中的数据匹配模型也可以为: 
 “<tr> <td> (?’name1’/Wildcard/) </td>  <td> (?’price1’/Wildcard/) </td> </tr>
<tr> <td> (?’name2’/Wildcard/) </td>  <td> (?’price2’/Wildcard/) </td> </tr>
<tr> <td> (?’name3’/Wildcard/) </td>  <td> (?’price3’/Wildcard/) </td> </tr>”;
其中“name1”、“price1”、“name2”、“price2”、“name3”和“price3”分别为数据匹配模型中六个捕获组的命名。在数据匹配模型对网页文件的源代码进行数据匹配时,该六个捕获组所匹配捕获的内容及其命名则被存储于缓存区中;于是步骤iv)中六个捕分别捕获并存储于缓存区中的内容如表3所示:
表3
编号 命名 捕获内容
0 name1 西红柿
1 price1 3.50元/500克
2 name2 青椒
3 price2 1.50元/500克
4 name3 胡萝卜
5 price3 2.50元/500克
由于每个捕获组的命名各不相同,从而通过命名可以对不同捕获组匹配的内容进行区分识别和提取。
实施例3:
在物价信息网站中,URL地址为“http://www.feinno.com/commodity-price/016”的网页内容有所变化,网页中不仅提供了如表1所示的蔬菜价格信息,还提供了另一个与表1的表格结构完全相同的粮食价格信息表格,如表4所示:
表4
Figure 2010106124052100002DEST_PATH_IMAGE002
现依然为用户提供蔬菜价格信息表格(如表1所示)中罗列的蔬菜名称数据以及各种蔬菜相应的价格数据,需要从上述网页中定向抓取蔬菜名称数据“西红柿”、“青椒”、“胡萝卜”以及三者对应的蔬菜价格数据“3.50元/500克”、“2.50元/500克”、“1.50元/500克”。
根据表1的表格结构特征和HTML源代码语法规则,可以确定待抓取的蔬菜名称数据和蔬菜价格数据在网页文件中的源代码至少应当包含表格标签“<table>”、表行标签“<tr>”、表头标签“<th>”、数据单元格标签“<td>”。但仅仅有上述的表格行列结构特征还不够,因为网页中还存在另一个具有相同表格结构的粮食价格信息表格(如表4所示),若采用实施例2中编译的数据匹配模型进行定向抓取,很可能抓取到粮食价格信息表格中的数据;因此还需要通过表头特征来区分网页文件中的两个表格。为此,本实施例中采用了同一发明构思的另一技术方案,对上述网页中的蔬菜名称和蔬菜价格数据进行定向抓取,其流程框图如图2所示,具体方法如下: 
A)将待抓取的网页数据在网页文件中具有的数据结构特征拆分为N级,划分N级定位域;每一级定位域包含至少一个待抓取的网页数据的数据结构特征,以及除数据结构特征部分的定位提取部分;其中,第N级定位域的定位提取部分即为待抓取的网页数据,N≥2;
本实施例中,针对待抓取的蔬菜名称数据和蔬菜价格数据所具有的数据结构特征,划分了2级定位域;第1级定位域以蔬菜价格信息表格的表头数据内容作为数据结构特征,以蔬菜价格信息表格的数据单元格作为定位提取部分;第2级定位域以蔬菜价格信息表格数据单元格的表格结构特征作为数据结构特征,以数据单元格中的蔬菜名称数据和蔬菜价格数据作为定位提取部分;从而通过2级定位域逐级定位至待抓取的网页数据。
B)根据网页文件的源代码语法规则,分别编译由正则表达式构建的每一级定位域的数据匹配模型; 
对第1级定位域而言,由于蔬菜价格信息表格的表头单元格的跨度为2列,因此第1级定位域的数据匹配模型中,除了以HTML源代码语法规则中的表格标签“<table>”、表行标签“<tr>”、表头标签“<th>”作为数据结构特征部分以外,还应当包含表格的列跨度属性“clospan”以及用于区分蔬菜价格信息表格的表头数据内容“蔬菜价格”,只是表格的单元格宽度属性系数“width”和边框宽度属性系数“border”尚不能确定;匹配过程中尚不能确定的内容由通配符“/Wildcard/”来代替,并通过结构匹配字符匹配上述的数据结构特征部分,通过正则表达式语法规则中的捕获组对作为第1级定位域中定位提取部分的蔬菜价格信息表格的数据单元格进行匹配捕获;从而,由正则表达式构建的第1级定位域的数据匹配模型为:
“<table /Wildcard/>
<tr> <th colspan="2">蔬菜价格</th> </tr>
(/Wildcard/)
</table>”; 
对第2级定位域而言,获取蔬菜价格信息表格的数据单元格后,其中的蔬菜名称数据和蔬菜价格数据的定向匹配完全可以采用实施例2中所述的匹配方式,因此由正则表达式构建的第2级定位域的数据匹配模型,可与实施例2相同,即:
“<tr> <td> (?’name1’/Wildcard/) </td>  <td> (?’price1’/Wildcard/) </td> </tr>”;
其中“name1”、“price1”分别为第2级定位域的数据匹配模型中两个捕获组的命名。
C)通过多级定位的方式逐级提取待抓取的网页数据;该步骤具体为: 
c1)第1级定位步骤包括:
11)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码;
由包含蔬菜价格信息的网页的URL地址“http://www.feinno.com/commodity-price/016”,可以通过万维网获取到该HTML格式的网页文件,然后通过文件解析获得网页文件的源代码:
“……
<table width="30%" border="1">
<tr> <th colspan="2">蔬菜价格</th> </tr>
<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>
</table>
……
……
<table width="30%" border="1">
<tr> <th colspan="2"> 粮食价格 </th> </tr>
<tr> <td> 大米 </td>  <td> 3.80元/500克 </td> </tr>
<tr> <td> 玉米 </td>  <td> 2.70元/500克 </td> </tr>
<tr> <td> 小麦 </td>  <td> 1.12元/500克 </td> </tr>
</table>
……”;
12)用第1级定位域的数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码;
根据正则表达式的匹配规则,用第1级定位域的数据匹配模型匹配上述步骤11)中解析得到的网页文件源代码,获取的相匹配的部分源代码如下:
“<table width="30%" border="1">
<tr> <th colspan="2">蔬菜价格</th> </tr>
<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>
</table>”;
13)从步骤12)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第1级定位域的定位提取部分;
通过第1级定位域的数据匹配模型的一个捕获组对数据结构特征部分的屏蔽,捕获并存储于缓存区中的定位提取部分为:
“<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>”;
可从缓存区中提取得到第1级定位域的定位提取部分。
c2)第2级定位步骤包括: 
n1)获取第1级定位域的定位提取部分:
“<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>
<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>
<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>”;
n2)用第2级定位域的数据匹配模型对第1级定位域的定位提取部分进行数据匹配,依次获取相匹配的部分源代码;
该步骤与实施例2中步骤iii)的过程完全一致,依次获取到相匹配的三组部分源代码分别为:
第一组:“<tr> <td> 西红柿 </td>  <td> 3.50元/500克 </td> </tr>”;
第二组:“<tr> <td> 青椒 </td>  <td> 1.50元/500克 </td> </tr>”;
第三组:“<tr> <td> 胡萝卜 </td>  <td> 2.50元/500克 </td> </tr>”;
n3)从步骤n2)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第2级定位域的定位提取部分;
通过第2级定位域的数据匹配模型中两个捕获组对数据结构特征部分的屏蔽,捕获并存储于缓存区中的内容如表5所示:
表5
编号 命名 捕获内容
0 name1 西红柿
1 price1 3.50元/500克
2 name1 青椒
3 price1 1.50元/500克
4 name1 胡萝卜
5 price1 2.50元/500克
根据不同捕获组的编号进行区分识别,分别提取缓存区中存储的待抓取的蔬菜名称数据“西红柿”、“青椒”、“胡萝卜”以及三者对应的蔬菜价格数据“3.50元/500克”、“2.50元/500克”、“1.50元/500克”。
D)对第N级定位步骤提取出的网页数据进行存储处理。 
本实施例中,采用实施例1改进方案中的MD5摘要效验的存储处理方式,对提取的三组蔬菜名称数据和三组蔬菜价格数据分别进行MD5效验,避免数据库中重复存储相同的网页数据;对于MD5值在数据库中不存在的蔬菜名称数据或/和蔬菜价格数据,则连同其MD5值一起存入数据库。 
从实施例3可以看到,在一些数据结构特征较为复杂、提取难度较高等特殊情况的网页数据,若通过一个数据匹配模型不便于准确的定向抓取网页数据,可采用本发明的多级定位的方式逐级提取待抓取的网页数据;并且,采用多级定位、逐级提取的方式,可以针对每一级的定位步骤和数据匹配模型进行独立的编程,通过逐级调用相应程序段的方式实现多级定位提取功能,能够使得定向抓取程序的管理、维护和修改更加方便。 
通过上述三个实施例能够看到,本发明方法利用待抓取的网页数据在网页文件中呈现的数据结构特征,对网页文件进行源代码语法规则分析,再通过正则表达式构建具有数据结构特征的数据匹配模型,对网页文件源代码进行数据匹配,并从中匹配的部分源代码提取出需要抓取的网页数据,解决了网页数据的定向抓取问题。本发明方法采用正则表达式作为匹配工具,而运用正则表达式进行字符段匹配的技术在网络技术领域中应用成熟,对本领域技术人员而言具有很强的可操作性,有利于本发明方法的普及应用。作为改进方案,可利用正则表达式语法规则中的捕获组对待抓取得网页数据或定位域中的定位提取部分进行捕获提取,充分利用正则表达式的语法规则,且操作简便;还可采用多个不同命名的捕获组分别匹配捕获多组待抓取得网页数据,应用灵活。针对一些数据结构特征较为复杂、提取难度较高的网页数据,本发明还提出了一种通过多级定位逐级提取待抓取的网页数据的定向抓取方案,体现了本发明方法具有较强适应能力,应用范围广泛。 
本发明方法不仅可以针对HTML格式的网页文件进行网页数据定向抓取,只要是本领域技术人员公知公用的网页文件源代码语法规则,如XML、WML等源代码语法规则,其相应格式网页文件中的网页数据都可以采用本发明方法进行定向抓取。本发明方法也不仅仅可以实现上述实施例中表格类型的网页数据的定向抓取,也可以对标题、文本、图像、链接等其它类型的网页数据进行定向抓取,因为这些类型的网页数据在网页文件中都存在一些能够被匹配的数据结构特征。本发明方法不仅仅可以运用于物品价格信息服务,针对天气预报、金融数据分析等专业化的行业信息数据服务,可以通过本发明方法从天气预报网站、金融数据网站等相关行业信息网站的网页中定向的抓取相关的网页数据信息,再通过综合、分析、转发等不同的方式提供给用户,实现相应行业信息数据服务。 
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。 

Claims (5)

1.网页数据定向抓取方法,其特征在于,包括以下步骤:
A)将待抓取的网页数据在网页文件中具有的数据结构特征拆分为N级,划分N级定位域;每一级定位域包含至少一个待抓取的网页数据的数据结构特征,以及除数据结构特征部分的定位提取部分;其中,第N级定位域的定位提取部分即为待抓取的网页数据,N≥2;
B)根据网页文件的源代码语法规则,分别编译由正则表达式构建的每一级定位域的数据匹配模型;
C)通过多级定位的方式逐级提取待抓取的网页数据;该步骤具体为:
c1)第1级定位步骤包括:
11)根据URL地址获取包含待抓取网页数据的网页文件,解析所述网页文件的源代码;
12)用第1级定位域的数据匹配模型对所述网页文件的源代码进行数据匹配,依次获取相匹配的部分源代码;
13)从步骤12)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第1级定位域的定位提取部分;
c2)第n级定位步骤,2≤n≤N,包括:
n1)获取第n-1级定位域的定位提取部分;
n2)用第n级定位域的数据匹配模型对第n-1级定位域的定位提取部分进行数据匹配,依次获取相匹配的部分源代码;
n3)从步骤n2)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第n级定位域的定位提取部分;
其中,第N级定位步骤提取出的定位提取部分,即为待抓取的网页数据;
D)对第N级定位步骤提取出的网页数据进行存储处理。
2.根据权利要求1所述的网页数据定向抓取方法,其特征在于,所述由正则表达式构建的每一级定位域的数据匹配模型,均是由结构匹配字符和捕获组构成;所述结构匹配字符用于匹配定位域中的数据结构特征部分;所述捕获组用于定位域中的定位提取部分;不同级定位域的数据匹配模型中的捕获组,通过不同的编号或命名加以区分识别。
3.根据权利要求2所述的网页数据定向抓取方法,其特征在于,所述步骤13)中“从步骤12)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第1级定位域的定位提取部分”,是通过正则表达式语法规则中的捕获组对步骤12)所述相匹配的部分源代码中第1级定位域的定位提取部分进行捕获并存储于缓存区中,从而屏蔽结构匹配字符匹配的数据结构特征部分;再从缓存区中提取第1级定位域的定位提取部分;
所述步骤n3)中“从步骤n2)所述相匹配的部分源代码中屏蔽数据结构特征部分,提取出第n级定位域的定位提取部分”,是通过正则表达式语法规则中的捕获组对步骤n2)所述相匹配的部分源代码中第n级定位域的定位提取部分进行捕获并存储于缓存区中,从而屏蔽结构匹配字符匹配的数据结构特征部分;再从缓存区中提取第n级定位域的定位提取部分。
4.根据权利要求2所述的网页数据定向抓取方法,其特征在于,所述待抓取的网页数据有多组,每组待抓取的网页数据匹配于第N级定位域的数据匹配模型中的一个捕获组,且不同的捕获组通过不同的编号或命名加以区分识别。
5.根据权利要求2所述的网页数据定向抓取方法,其特征在于,所述步骤D)中“对第N级定位步骤提取出的网页数据进行存储处理”,是计算第N级定位步骤提取出的网页数据的MD5值,并查找数据库中是否存在相同的MD5值;若是,则放弃存储操作;否则,将第N级定位步骤提取出的网页数据连同其MD5值一起存入数据库,并建立该网页数据与其MD5值的对应关系。
CN201010612405A 2010-12-29 2010-12-29 网页数据定向抓取方法 Expired - Fee Related CN102043862B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010612405A CN102043862B (zh) 2010-12-29 2010-12-29 网页数据定向抓取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010612405A CN102043862B (zh) 2010-12-29 2010-12-29 网页数据定向抓取方法

Publications (2)

Publication Number Publication Date
CN102043862A CN102043862A (zh) 2011-05-04
CN102043862B true CN102043862B (zh) 2012-10-17

Family

ID=43909999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010612405A Expired - Fee Related CN102043862B (zh) 2010-12-29 2010-12-29 网页数据定向抓取方法

Country Status (1)

Country Link
CN (1) CN102043862B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077353B (zh) * 2011-12-30 2017-08-25 北京奇虎科技有限公司 一种黑链检测的方法及装置
CN102591965B (zh) * 2011-12-30 2014-07-09 奇智软件(北京)有限公司 一种黑链检测的方法及装置
CN102982161A (zh) * 2012-12-05 2013-03-20 北京奇虎科技有限公司 网页信息的获取方法和装置
CN105653531B (zh) * 2014-11-12 2020-02-07 中兴通讯股份有限公司 数据提取方法及装置
CN106294364B (zh) * 2015-05-15 2020-04-10 阿里巴巴集团控股有限公司 实现网络爬虫抓取网页的方法和装置
CN106933931A (zh) * 2015-12-31 2017-07-07 远光软件股份有限公司 一种网页数据的显示方法及装置
CN105718580A (zh) * 2016-01-25 2016-06-29 江苏国泰新点软件有限公司 一种提供招投标信息搜索服务的方法和装置
CN105930385A (zh) * 2016-04-13 2016-09-07 珠海迈科智能科技股份有限公司 一种数据爬取方法及系统
CN108228151A (zh) * 2016-12-22 2018-06-29 北京询达数据科技有限公司 一种新型网络机器人的设计方法
CN107885820A (zh) * 2017-11-07 2018-04-06 北京小度互娱科技有限公司 基于爬虫系统的广度遍历定向抓取方法
CN112579852B (zh) * 2019-09-30 2023-01-10 厦门邑通智能科技集团有限公司 一种互动式网页数据精确采集方法
CN112732763A (zh) * 2021-01-20 2021-04-30 北京千方科技股份有限公司 数据的聚合方法、装置、电子设备及介质
CN113268982B (zh) * 2021-06-03 2024-05-28 湖南四方天箭信息科技有限公司 一种网络表格结构的识别方法及装置、计算机装置及计算机可读取存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101094135A (zh) * 2006-06-23 2007-12-26 腾讯科技(深圳)有限公司 一种互联网内容信息的提取方法和提取系统
CN101477556A (zh) * 2009-01-22 2009-07-08 苏州智讯科技有限公司 一种从互联网海量信息中发现热点的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101094135A (zh) * 2006-06-23 2007-12-26 腾讯科技(深圳)有限公司 一种互联网内容信息的提取方法和提取系统
CN101477556A (zh) * 2009-01-22 2009-07-08 苏州智讯科技有限公司 一种从互联网海量信息中发现热点的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
孙承杰等.基于统计的网页正文信息抽取方法的研究.《中文信息学报》.2004,第18卷(第5期), *
陈红叶.Web信息提取及知识发现方法研究.《中国优秀硕士学位论文全文数据库》.2002, *

Also Published As

Publication number Publication date
CN102043862A (zh) 2011-05-04

Similar Documents

Publication Publication Date Title
CN102043862B (zh) 网页数据定向抓取方法
CN101650715B (zh) 一种筛选网页上链接的方法和装置
CN101833561B (zh) 面向自然语言处理的语义Web服务智能代理
US8239387B2 (en) Structural clustering and template identification for electronic documents
US20040030687A1 (en) Information collection system and method
CN106407201A (zh) 一种数据处理方法及装置
US20090240670A1 (en) Uniform resource identifier alignment
CN103078854B (zh) 报文过滤方法与装置
CN103617174A (zh) 一种基于云计算的分布式搜索方法
Kauppinen et al. Linked brazilian amazon rainforest data
CN102662969A (zh) 一种基于网页结构语义的互联网信息对象定位方法
CN102521232A (zh) 一种互联网元数据的分布式采集处理系统及方法
CN101055566B (zh) 一种电子数据表的函数收集方法和装置
CN105224633A (zh) 基于SQL语言的solr查询方法及装置
CN109002470A (zh) 知识图谱构建方法及装置、客户端
CN102004805B (zh) 基于最大相似性匹配的网页去噪系统及其去噪方法
CN102902792B (zh) 列表页识别系统及方法
CN1858744A (zh) 数据查询系统及数据查询方法
CN101840438B (zh) 面向源文献元关键词的检索系统
KR20190139037A (ko) 텍스트마이닝 기반 건설공사 문서분석방법 및 시스템
CN101859318A (zh) 一种基于服务网络的服务发现工具的建立方法
US8706705B1 (en) System and method for associating data relating to features of a data entity
US11256670B2 (en) Multi-database system
CN106066875A (zh) 一种基于深网爬虫的高效数据采集方法及系统
Nguyen et al. Estimating searching cost of regular path queries on large graphs by exploiting unit-subqueries

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170626

Address after: Jiulongpo District from four Science Park Road 400012 Chongqing City No. 257 telecom industrial building on the third floor

Patentee after: Chongqing Zhong ran Information Industry Co.,Ltd.

Address before: The 401121 northern New District of Chongqing municipality Mount Huangshan Road 5 south of Mercury Technology Building 1 floor office No. 3

Patentee before: A-MEDIA COMMUNICATION TECH CO.,LTD.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170726

Address after: 401147, room 2, building 168, Moco center, 703 Xin Nan Road, Chongqing, Yubei District

Patentee after: Chongqing super Body Technology Co.,Ltd.

Address before: Jiulongpo District from four Science Park Road 400012 Chongqing City No. 257 telecom industrial building on the third floor

Patentee before: Chongqing Zhong ran Information Industry Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121017