一种提取网页数据的方法和Web爬虫系统的制作方法

文档序号:6610074阅读:227来源:国知局
专利名称:一种提取网页数据的方法和Web爬虫系统的制作方法
技术领域
本发明一般涉及数据分析,更具体的说,涉及利用Web爬虫(Crawler)从网页中提取数据的方法与系统。
背景技术
随着计算机和互联网技术的发展,搜索引擎已经成为Web客户机(例如,计算机)的使用者获取信息的重要方式。一般,用户通过向搜索引擎提供其感兴趣的关键字,由搜索引擎根据用户提供的关键字生成页面,来帮助用户发现和访问新的“统一资源地址”(URL)。为了达成这一目标,搜索引擎通过索引器检索事先建立好的索引数据结构生成提供给用户的关键字结果页面,并使用Web爬虫(或称之为“蜘蛛”、“机器人”)定期的访问通过URL定位的网页资源,提取出其中的文本信息和其他相关网页属性,并存储该信息以使得索引器可以处理被检索的数据。前述的索引器读取这些文档,并根据每个文档所包含的这些关键字和该文档的其他属性来创建有优先级的索引。不同的搜索引擎通常使用专用算法来建立索引,以便于查询返回有意义的结果。
因此,Web爬虫对于搜索引擎的操作而已至关重要。但是,现有的Web爬虫仅能提取出Web页面中的纯文字信息,这种技术限制导致了很多搜索引擎优化(SEO)技巧的产生,例如在网页中嵌入浏览者不可见的文本,或者根据爬虫提供的身份标识(UserAgent),进行特殊处理,典型的,当对方网站发现是搜索引擎爬虫时,提供一种页面数据,发现是一般的浏览器访问时,提供一套页面;此外,由于将网页整体作为一整体文本文件,在处理过程中丢失了网页元素位置信息所隐含的语义信息,导致在搜索过程中很难提取出有语义信息的数据项。以一个工作相关的垂直搜索网站,地点是其搜索内容中重要的维度,而传统的爬虫只能将网页作为一个文本文件,导致很难将工作地点的信息与其他网页中出现的表示地点的名词用普遍适用的方法分离;额外的,随着Web技术的发展,以AJAX(Asynchronous JavaScript+XML)为代表的脚本动态网页技术得到了越来越多的广泛的应用。AJAX技术通过JavaScript脚本在Web客户端的Web页面处理部件(一般称之为“浏览器”)中执行,在脚本中通过操作“文档对象模型”DOM以实现动态修改网页内容的效果。现有的爬虫无法获取由脚本动态生成的网页内容。
由此可见,提供一种通用的支持AJAX技术的提取网页数据的方法和Web爬虫系统对于改进搜索引擎的用户体验,提高搜索引擎的查全率有帮助。

发明内容
本发明的目的,在于为搜索引擎系统或其他由Web页面提取需求的系统,提供通用的数据提取方法,用于解决现有Web爬虫系统无法抓取以AJAX为代表的使用脚本生成网页内容的网页。同时,本发明公开的方法和系统还可以用于数据标引,这项技术主要应用在为某些特定Web内容提供的搜索引擎,例如用于检索工作职位信息的搜索引擎等。
为提供对本发明的一些方面的基本理解,下文呈现了本发明的简化的描述。此描述不是本发明的广泛的纵览。它并不意在识别本发明的关键/紧要的部分或勾画出本发明的范围。它唯一的目的是用简化的形式来呈现本发明的一些概念,作为以后提出的更加详细的说明的序言。
本发明一般涉及数据分析,更具体的说,涉及用于可处理DOM模型和脚本的Web爬虫来从联网系统提取数据的方法和系统。
本发明所述其特征在于,包括两大部件,其中第一部件,用于向第二部件提供数据提取任务,并接收第二部件的数据提取任务的执行结果;第二部件,用于与网页服务器通信,获取网页数据,并通过操作DOM模型提取数据,并对提取到的数据项进行描述,将所属的提取到的数据与对其的描述发送给第一部件。
本发明中的第二部件包括用于解析网页文件的解析器101、用于构造网页DOM(文档对象模型)的构造器102、用于执行网页中包含脚本的执行装置103、用于执行数据提取代码的执行装置104,以及用于存储提取出的数据的装置105;本发明中的第二部件可以是浏览器。
本发明所述的数据提取方法还包括通过特定的URL(统一资源地址,下同)发现前述URL适用的数据提取代码。在本发明的一个实施例中,前述的数据提取代码在网页源文件中指明;在本发明的另一个实施例中,前述数据提取代码通过公开其适用于何种类型的URL的正则表达式,通过前述的正则表达式的匹配结果确定前述URL适用的数据提取代码。
本发明所述的Web爬虫系统包括爬行任务控制装置201、数据存储装置202、URL处理装置203、采用本发明所述方法的网页数据提取装置204,以及为前述提取装置204与爬行任务控制装置201之间提供数据交换服务的其他装置205;
在本发明的一个实施例中,爬行任务控制装置201向网页数据提取装置204发送爬行任务,爬行任务中,一般包括任务的目标URL 251、相对目标URL的引用URL(ReferURL)202,访问目标URL需要用到的Post数据203,数据存储装置中已知的已被提取过的网页数据的Hash值204、数据存储装置中已知的已被提取过的网页数据的获取时间205。其中,属性203、204、205,可以为空,即不包括在爬行任务中。
网页数据提取装置收到爬行任务后,通过任务指明的参数,获取对应网页的HTML代码,并用本发明所述的数据提取方法提取数据;当提取到的数据与爬行任务中声明的数据存储装置中储的数据不符时,将新的数据反馈给爬行任务控制装置201进行后续处理。前述的数据包括普通文本数据和通过本发明所述的数据提取方法发现的新的网络URL地址。
本发明的有益效果在于,通过应用本发明所描述的方法和系统,可以有效地解决Web爬虫系统无法提取脚本动态生成的网页数据的问题;可以为垂直搜索引擎提供通用的数据标引框架,有效的降低垂直搜索引擎开发定向爬虫的研发成本。


为了实现前述目标和有关的目标,这里连同下文和附图来描述本发明的某些说明性的方面。但是,这些方面只表现出可以使用本发明的原理的各种方法的一些方法,并且,本发明意在包括所有这类方面及其相等物。
图1A为根据本发明的某个方面的Web爬虫系统的一个实施例图1B为根据本发明的某个方面的应用了消息中间件的Web爬虫系统的一个实施例图2A为根据本发明的某个方面的数据分析系统的客户机的模块原理2B为根据本发明的某个方面的数据分析系统的基于浏览器的客户机一个实施例图2C为根据本发明的某个方面的数据分析系统的一个实施例图2D为根据本发明的某个方面的数据分析系统的提供了脚本同步功能的一个实施例图2E为适用于本发明所述方法的一种网页的代码示例图3A为根据本发明的某个方面在客户端提取网页数据的一种基于XPATH的流程的说明图3B为根据本发明的某个方面在客户端提取网页数据的一种流程的说明图4A是根据本发明的某个方面实现的一种Web爬虫系统的处理流程的说明图4B是根据本发明的某个方面实现的一种Web爬虫系统的含有子任务的处理流程的说明具体实施方式
下面根据附图和实施例来描述本发明。在下文中,处于解释的目的陈述了众多特殊的细节,以提供对本发明的彻底的理解。但是,本发明可以在没有这些特殊细节的条件下加以实践。在其他实施例中,用框图形式表现了公知的结构和设备以促进对本发明的理解。
在本申请中,术语“部件”意在指计算机相关的实体一硬件、硬件和软件的组合、软件或执行中的软件。例如,部件包括但不限于在处理器上运行的进程、处理器、对象、可执行项、执行线程、程序和/或计算机。例如,在服务器上运行的程序和该服务器都可以是计算机部件。一个或多个部件可能驻留在执行进程和/或线程内,并且,部件可能定位在一台计算机上并/或分布在两台或更多台计算机之间。
本发明提供了从网页中提取数据的方法以及相应的使用本方法的Web爬虫系统,本发明所述的方法和系统在相关专业技术领域,往往也被称作“数据标引”。传统的Web爬虫所具有的某些缺点通过本发明得到了缓和。
在图1A中,展示了根据本发明的某个方面的Web爬虫系统100的实施例。在本发明的这个实施例中,数据分析系统100由编号从1到N的客户机102-105(其中,N表示1到无穷大的任何数字)通讯系统108,爬虫控制服务器110、搜索服务器111和网页服务器112组成。客户机102-105为供爬虫控制服务器调度的一组“分布式资源”。它们一般用于执行爬虫控制服务器派发的任务,发现新的URL、报告网页的更改、以及根据任务提取出的网页数据或其他类似数据,并将所述的数据通过通信系统108提供给爬虫控制服务器110。通信系统108可以是互联网或局域网(内部网络)或其他类似物构成,它提供了一种访问方法。它也允许客户机102-105与爬虫控制服务器110,和/或客户机102-105之间通信,用于搜集提取网页信息。本质上,Web爬虫的功能被分布在爬虫控制服务器110以及客户机102-105之中。爬虫控制服务器110利用客户机来从网页服务器112那里获得信息,客户机102根据从爬虫控制服务器获取到的任务对网页进行加工处理,比将处理后的结果反馈给爬虫控制器110,以便于将获得到的信息提供给搜索服务器111进行进一步处理。本发明提供了搜索引擎可以从中利用数据的更富有语义信息的数据集。
在图1B中,展示了根据本发明的某个方面的Web爬虫系统100的实施例的某种改进形态。在本发明的这个实施例中,通信系统108由消息中间件服务器120以及互联网或局域网(内部网络)或其他类似物构成。客户机102-105之间以及客户机102-105与爬虫控制服务器110之间,通过消息中间件服务器120通信。在更进一步的具体实施例中,消息中间件服务器为支持XMPP(Extensible Messaging and Presence Protocol)协议的即时通信服务器;在本领域有经验的工程师应该很容易想到用采取其他协议的服务器替换XMPP消息中间件服务器,如采用JMS(Java Message Service)规范的服务器,腾讯公司提供的QQ服务器,微软公司提供的MSN服务器等。
在本发明的一个实施例中,客户机102-105与爬虫控制器110之间采用urlencode过的JSON(JavaScript Object Notation)字符串作为消息正文,通过XMPP协议传递。包括爬行任务、爬行任务的反馈、数据提取脚本的同步等。
在图2A中,展示了根据本发明的某个方面的数据分析系统200的实施例。在本发明的这个实施例中,数据分析系统200由爬虫控制服务器210、客户机202、网页服务器220构成。其中,客户机202代表一台或多台执行相似任务的计算机或计算机部件,客户机202由网络访问部件202.0、HTML分析部件202.1、DOM(文档对象模型,简称DOM,下同)构造部件202.2、脚本执行部件202.3和任务执行部件202.4构成,其中,从网页服务器220获取的网页脚本可以通过脚本执行部件202.3执行,访问并/或修改由DOM构造部件202.2构造的DOM。在进一步的实施例中,客户机202还包括页面布局引擎202.5、显示渲染引擎202.6,在图2B所示的实施例中,有此种实施例的进一步说明。客户机202获得数据提取任务后,启动数据提取流程。客户机202获得数据提取任务的方式有多种,其中包括客户机202主动向爬虫控制器210查询、申请新任务,爬虫控制器210主动向客户机202派发任务,根据某种规则自动在客户机202上生成新任务。其中所述的根据某种规则自动在客户机202生成新的任务多用于一个逻辑的数据项(数据单元)其数据分布在多个网页,在图2C所示的实施例中有此种情况的进一步说明。客户机202获得数据提取任务后,向所属任务中指明的网页服务器220发出请求所属任务中指明网页资源的HTTP请求,收到所属的网页服务器220返回的数据后,进入数据提取部分。客户机202通过网络访问部件202.0收到网页服务器220返回的数据后,通过HTML分析部件202.1将数据中的HTML标记识别出来,并通过与DOM构造部件202.2互动,构造与服务器220返回数据向对应的DOM模型(在开源浏览器Firefox中,有htmlparser与dom构造器如何互动产生DOM模型的源码,在此不做赘述),并通过脚本执行部件202.3执行服务器220返回数据中嵌入和/或引用的脚本,用以获得被脚本修改过的DOM模型,根据任务信息确定并获取相应的数据提取代码并通过任务执行部件202.4执行,已完成数据提取。
前述的数据提取任务一般包括以下内容要访问的目标URL、该目标URL的引用URL(ReferURL,定义在HTTP规范中),更进一步的还可以包括要提交到目标URL的Post数据、访问目标URL的HTTP方法(主要有GET、POST等)、访问目标URL需要提供的Cookie(一种用于标示用户身份的标示,一般为纯文本,定义在HTTP规范中)和/或该任务相应的数据提取代码或能够唯一标识对应代码的数据(如代码的MD5值等)在一个具体实施例中,任务执行部件202.4与脚本执行部件202.3为同一部件,客户机202通过称之为“脚本注入”的技术将任务相应的数据提取代码(一般为JavaScript)交由脚本执行部件202.3执行。在公开技术Firefox插件GreaseMonkey中,对此项技术进行了实现,在此不做赘述。
在一个具体实施例中,前述的任务代码执行部件202.4与脚本执行部件202.3不是同一计算机组件,执行部件202.4为可以访问文档对象模型(DOM)的不同于网页脚本执行引擎的其他组件,例如Python等。
在一个具体实施例中,任务执行部件还包括用于存储提取出的网页数据的存储部件202.4.1和/或用于向爬虫控制器210反馈数据的部件202.4.2。数据提取脚本在执行过程中,将抽取到的数据存储到数据存储部件202.4.1中,并通过反馈数据部件202.4.2向爬虫控制器反馈任务执行结果。在进一步的实施例中,反馈数据部件202.4.2通过消息中间件服务器的客户端反馈数据,并通过数据提取脚本激发;在进一步的实施例中,反馈数据部件202.4.2当数据提取脚本执行完毕后,将数据存储部件202.4.1中存储的数据和/或数据提取脚本执行的结果反馈给派发任务的爬虫控制器。
在一个具体实施例中,客户202获得的数据提取任务中包含当前服务器前次记录的任务中指明的URL上包含的数据的记录时间,根据HTTP协议的规范,客户机可以构造出特殊的HTTP请求,以减小网络开销。当对方服务器反馈数据未更新的HTTP响应时,向发送前述数据提取任务爬虫控制器210报告数据未更新,否则,则将从网页中提取到的数据(包括新发现的URL/爬行任务)反馈给爬虫控制器210;在进一步的实施例中,客户机202获得的数据提取任务中当前服务器前次记录的任务中指明的URL上包含的数据的某种唯一标识(如MD5等),客户机202将其从网页中提取的数据进行计算,比较与服务器端的数据是否相同,如相同,则反馈给爬虫控制器210数据未更新;如不同,则将从网页中提取到的数据(包括新发现的URL/爬行任务)反馈给爬虫控制器210。
在一个具体实施例中,爬虫控制器收到了客户机202反馈的数据,将其中从网页中提取的文本或图像数据存储在存储部件上(一般为计算机外存,如硬盘),以供搜索引擎构建索引,将其中的URL信息放入待抓取URL列表中。当URL信息不在待抓取列表中时,则将其加入;当URL信息以存在与待抓取列表中时,则提升其评分等级,以使得其被爬虫控制器更频繁的派发以获取更新。此处提供该实施例,仅仅描述了一种可行的如何处理新发现的URL的方法,任何公知的基于URL的网页数据获取调度方法都被应用于本发明。
在图2B中,展示了根据本发明的某个方面的数据分析系统200的实施例的某种改进形态。在本发明的这个实施例中,客户机202由网络访问部件202.0、HTML分析部件202.1、DOM(文档对象模型,简称DOM,下同)构造部件202.2、脚本执行部件202.3、任务执行部件202.4、页面布局引擎202.5和显示渲染引擎202.6构成,其中,从网页服务器220获取的网页脚本可以通过脚本执行部件202.3执行,访问并/或修改由DOM构造部件202.2构造的DOM。在技术实现上,页面布局引擎202.5于显示渲染引擎202.6可以是同一部件,本技术领域中有经验的工程师很容易想到通过移除显示渲染引擎或更进一步的移除或简化页面布局部件202.5以达到加快页面分析速度的目的。在本发明的一个实施例中,显示渲染引擎为空服务组件,即虽然提供了相应的显示渲染接口,但并不实际在客户机的显示设备(如果存在)上绘制图像。
相关领域的专业技术人员将包括网络访问部件202.0、HTML分析部件202.1、DOM构造部件202.2、脚本执行部件202.3、页面布局引擎202.5和显示渲染引擎202.6的复合装置称为“浏览器渲染引擎”,例如Mozilla.org的Gecko引擎、微软公司的MSHTML引擎、苹果公司的WebKit引擎等。显而易见的,本发明的某个具体实施例可以是任务执行部件202.4与“浏览器渲染引擎”或“浏览器”复合(下文中,为便于说明,如不做特别说明使用术语“浏览器”用于不做区别的代表“浏览器渲染引擎”或“浏览器”。本发明的具体实施例中,采用日常人们浏览网页的“浏览器”与仅采用“浏览器渲染引擎”,对实施本发明所示出的方法与系统没有能够产生新颖性和创造性的区别),以完成数据抽取工作并与爬虫控制器210等其他部件配合构成Web爬虫系统。
在图2C中,展示了根据本发明的某个方面的数据分析系统200的实施例的某种改进形态。在本发明的这个实施例中,任务执行部件202.4提供接口,执行任务指明的数据提取代码,数据提取代码将执行过程中需要进一步爬行的网页URL连同要访问前述URL所必须的其他附属数据存储在数据存储部件202.4.1,任务执行部件发现前述数据提取代码产生了新的存储在数据存储部件202.4.1的新任务,则按照某种顺序执行新产生的子任务,在执行子任务产生的数据与执行前述数据提取代码产生的数据混合,共同发送到爬虫控制服务器210。
在本发明的一个具体实施例中,数据存储部件202.4.1通过键、值对存储数据,其中,值一般用于记录从网页中提取的数据;键一般是用于描述值特性的文本值。
在图2D中,展示了根据本发明的某个方面的数据分析系统200的实施例的某种改进形态。在本发明的这个实施例中,客户机202还包括脚本存储部件202.7,该部件中存储了爬虫控制器提供的全部或部分适用的数据提取脚本,客户机202与爬虫控制器210或其他存储了数据提取脚本的计算机部件同步数据提取脚本。任务执行部件202.4通过客户端202获取到任务的目标URL,确定目标URL适用于何种数据提取脚本。脚本确定后,送入任务执行部件202.4执行,后续处理过程不再赘述。
在图2E中,展示了根据本发明的某个方面的数据分析系统的实施例。在本发明的这个实施例中,在需要进行数据提取处理的网页中,含有如何获取数据提取代码的指示,在这个实施例中,使用头元素节中Meta子元素用于描述如何获取数据提取代码,在本实施例中是通过给出数据提取代码的URL实现的。
在图3A中,展示了根据本发明的某个方面的数据分析系统的实施例。在本发明的这个实施例中,在前述实施例中描述DOM构造部件202.2构造的DOM模型支持XPATH(XML Path Language)规范的情况下,采用XPATH作为从网页DOM上提取数据的工具。当待提取数据的网页的DOM模型构造好后,使用XPATH定位网页上的元素,提取出相应的文本信息或进行其他处理。以图3A为例,XPATH表达式//h1[@id=″idx_news″]/a/font,代表在id为idx_news的h1元素下的a元素下的font元素,可以通过访问前述font元素的innerText、contentTex t或其他DOM属性、子元素取得其内部的文本,在本例中为“测试新闻标题”。XPATH为W3C定义的操作DOM元素的基本方法之一,在此不做赘述。
在本发明的一个具体实施例中,通过将生成特定网页元素及其子元素的HTML页面源码提取数据。可以通过前述的XPATH方法或通过DOM规范中规定的方法获得要生成HTML页面源码的网页元素,通过对其DOM子元素及其属性的遍历,生成与前述元素等价的HTML代码,即浏览器可以通过所述的代码重新生成属性、子元素一样的DOM元素。将网页元素转换为HTML的方法在开源的Firefox插件view_source_chart中有具体实现,在此不再赘述。可以通过对生成的HTML代码进行字符串匹配提取文本信息。在一个实施例中,字符串匹配的方法是顺序或倒序查找;在一个实施例中,字符串匹配的方法是正则表达式。显然的,当前述用于生成HTML页面源码的网页元素为网页根元素时,本实施例所述的数据提取方法将退化为直接匹配网页源码。
在图3B中,展示了根据本发明的某个方面的数据分析系统的实施例。在本发明的这个实施例中,先通过前述由实施例中示出的方法将网页元素A转化为相应的源码,通过在源码中进行字符串匹配,得到网页元素B对应的源码,通过网页元素B,获得确定网页元素C,访问网页元素C的DOM属性,完成数据提取。本实施例一般用于自根元素的XPATH表达式经常变化,无法准确获取相应的页面元素。
鉴于以上所示和所描述的这些示范系统,将参考图4A-4B中的流程图来更好的理解可以根据本发明来加以实施的方法。处于简单解释的目的,这些方法被表现和描述为一系列方框,但需要注意,本发明并没有受到这些方框顺序的限制,因为根据本发明,一些方框可能按与这里所示和所描述的顺序不同的顺序发生并/或与其他方框并发的发生。而且,可能并不是要求所有被展示的方框根据本发明来实施这些方法。
参考图4A,展示了根据本发明的某个方面的数据处理分析系统的方法400的流程图。401客户端从爬虫控制器获得任务,任务中一般包括目标URL、目标URL的引用URL、Post数据等,客户端根据任务的描述的目标URL,402向网页服务器发送HTTP请求,所述的请求中可以包含If-Not-Modified信息,用于指明服务器端已有的数据时间。网页服务器将前述请求的Web页面返回给客户端,或返回HTTP协议中定义的其他状态。客户端可能无法与网页服务器建立连接,在此种情况下,应向爬虫控制器报告错误,目标服务器器不可达。
当403网页服务器返回网页数据给客户端,客户端根据任务信息,确定要执行的脚本,在一个实施例中,通过匹配脚本附带的URL模式信息与目前URL进行正则式匹配确定该URL应适用的脚本。通过前述的“脚本注入”技术,404将数据提取脚本注入网页,405执行数据提取脚本进行数据提取。提取的数据包括附加了额外描述性属性的文本信息和前述网页中引用的URL。前述的任务中可能包含服务器端已知的数据信息或数据信息的特征值(如MD5),客户端将新提取的数据与服务器端已知的数据信息或数据信息的特征值进行比对406。当数据或特征值不一致时,407将新提取的数据反馈回服务器端;当数据或特征值一致时,通知服务器端数据无变化。
参考图4B,展示了根据本发明的某个方面的数据处理分析系统的方法450的流程图。451客户端从爬虫控制器获得任务,任务中一般包括目标URL、目标URL的引用URL、Post数据等,客户端根据任务的描述的目标URL,452向网页服务器发送HTTP请求,所述的请求中可以包含If-Not-Modified信息,用于指明服务器端已有的数据时间。453网页服务器将前述请求的Web页面返回给客户端,或返回HTTP协议中定义的其他状态。客户端可能无法与网页服务器建立连接,在此种情况下,应向爬虫控制器报告错误,目标服务器器不可达。
当网页服务器返回网页数据给客户端,客户端根据任务信息,确定要执行的脚本,在一个实施例中,通过匹配脚本附带的URL模式信息与目前URL进行正则式匹配确定该URL应适用的脚本。通过前述的“脚本注入”技术,454将数据提取脚本注入网页,455执行数据提取脚本进行数据提取。提取的数据包括附加了额外描述性属性的文本信息和前述网页中引用的URL。执行数据提取脚本后,459检查数据提取脚本是否产生了新的数据提取任务,如果有,则458执行子任务进行数据提取。前述的任务中可能包含服务器端已知的数据信息或数据信息的特征值(如MD5),客户端将新提取的数据与服务器端已知的数据信息或数据信息的特征值进行比对456。当数据或特征值不一致时,457将新提取的数据反馈回服务器端;当数据或特征值一致时,通知服务器端数据无变化。
在本发明的一个实施例中,在爬虫控制器中,存储一些种子URL,客户端通过提取前述种子URL页面上引用的新的URL,并将新发现的URL提交回爬虫控制器。服务器端识别客户端上报的URL,将新发现的URL放入待爬行的URL列表中。在一个实施例中,客户端主动向爬虫控制器发送请求,由爬虫控制器从待爬行URL列表中取出URL构成爬行任务反馈给客户端。
在本发明的一个具体实施例中,爬虫控制器可以通过将同一URL的数据采集工作复制为多个任务,交由多个数据提取客户端进行,通过比对数据提取客户端返回的数据,从而避免恶意的客户端提供虚假数据。
在本发明的一个具体实施例中,客户端还包括用于辅助编写数据提取脚本的开发环境。通过前述的“脚本注入”的方法,检测在网页上的鼠标动作,当发生单击事件后,取得点击事件所在的网页元素,并根据前述的元素,生成能够获取到前述元素的XPATH表达式。开发者可以通过某种交换部件修改XPATH表达式,新的表达式的选取效果将实时的反应的网页上。前述的开发环境还提供通过XPATH和该表达式能够选取的元素类型自动生成数据提取代码。
以上所述仅是本发明的优选实施方式,应当指出对于本发明技术领域的普通技术人员来说,在不脱离本发明原来的前提下,可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种网页数据的提取方法,其特征在于第一部件,用于向第二部件提供数据提取任务,并接收第二部件的数据提取任务的执行结果;第二部件,用于与网页服务器通信,获取网页数据,并通过操作DOM模型提取数据,并对提取到的数据项进行描述,将所属的提取到的数据与对其的描述发送给第一部件。
2.根据权利要求1所述的网页数据的提取方法,其特征在于第二部件中,包括用于解析网页的解析器、用于构造DOM模型的DOM构造器、用于执行网页中嵌入或引用脚本的脚本解释器以及用于从DOM模型提取数据的数据提取装置,其中通过脚本解释器解释的网页脚本可以访问并修改由DOM构造器构造的网页DOM模型。
3.根据权利要求2所述的网页数据的提取方法,其特征在于第二部件中,包括用于计算网页各元素大小、位置的网页布局部件。
4.根据权利要求2所述的网页数据的提取方法,其特征在于第二部件中,所述的从DOM模型提取数据的数据提取装置,将用于提取数据的网页脚本交由所述的脚本解释器执行。
5.根据权利要求4所述的网页数据的提取方法,其特征在于用于进行数据提取的网页脚本通过所述的进行数据提取网页指定。
6.根据权利要求4所述的网页数据的提取方法,其特征在于存在通过网页URL确定数据提取脚本的部件或服务,用于进行数据提取的网页脚本是通过将所述的进行数据提取网页的URL传递给所述的用于确定数据提取脚本部件或服务确定的。
7.根据权利要求4所述的网页数据的提取方法,其特征在于所述的用于数据提取的网页脚本通过XPATH定位网页元素,通过访问所述的网页元素的属性或子元素节点获取网页数据。
8.根据权利要求4所述的网页数据的提取方法,其特征在于所述的用于数据提取的网页脚本已经取得的网页元素,生成相对应的网页代码,通过正则表达式确定特定字符串的位置,并根据前述特定字符串的位置定位网页元素。
9.根据权利要求4所述的网页数据的提取方法,其特征在于所述的用于数据提取的网页脚本使用权利要求7与权利要求8描述的数据提取方法组合使用确定待提取数据的网页元素。
10.根据权利要求2所述的网页数据的提取方法,其特征在于第二部件中,包括用于存储从网页中提取到的数据的数据存储部件,所述的数据存储部件中存储的从网页中提取的数据可以增加一个或多个用于标明其内容类型的文本;数据提取过程结束后,第二部件将提取到的数据进行处理,返回第一部件。
11.一种Web爬虫系统,其特征在于由向爬虫派发Web爬行任务的爬虫控制器,以及对Web进行数据提取的Web爬虫构成;所述的Web爬虫由HTML解析器、DOM模型构造器、脚本解释器以及数据提取装置组成;所述的爬虫完成由爬虫控制器提供的数据提取任务后,将任务执行的结果返回爬虫控制器或其他由爬虫控制器指定的通信对方;所述的爬虫控制器与爬虫之间通过网络进行数据的交换。
12.根据权利要求11所述的WEB爬虫系统,其特征在于所述的爬虫与爬虫控制器采用消息中间件,通过网络交换数据。
全文摘要
本发明涉及一种利用Web爬虫(Crawler)从网页中提取数据的方法与系统,更进一步的,本发明示出了一种利用浏览器页面布局引擎从网页中提取数据并被搜索引擎使用的方法与系统,包括第一部件和第二部件;第一部件,用于向第二部件提供数据提取任务,并接收第二部件的数据提取任务的执行结果;第二部件,用于与网页服务器通信,获取网页数据,并通过操作DOM模型提取数据,并对提取到的数据项进行描述,将所属的提取到的数据与对其的描述发送给第一部件。通过应用本发明所描述的方法和系统,可以有效地解决Web爬虫系统无法提取脚本动态生成的网页数据的问题;可以为垂直搜索引擎提供通用的数据标引框架,有效的降低垂直搜索引擎开发定向爬虫的研发成本。
文档编号G06F17/30GK101089856SQ20071011932
公开日2007年12月19日 申请日期2007年7月20日 优先权日2007年7月20日
发明者李沫南 申请人:李沫南
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1