一种通用的可用于任何网页的网页内容抓取的方法

文档序号:6596890阅读:264来源:国知局
专利名称:一种通用的可用于任何网页的网页内容抓取的方法
技术领域
本发明属于网络技术领域,具体属于一种通用的可用于任何网页的网页内容抓取
的方法。
背景技术
因特网时代,丰富的互联网资源,大大地便利了人们的信息生活。然而,随着信息 量的大量爆炸式增加,而作为一个普通网民,如果能够轻松方便地将互联网--匕的其他任何 网页中的对自己有价值的信息内容抓取到自己的网页上使用,成了网民们头疼的问题。因 为传统的抓取方式有很高的技术壁垒,为了抓取某一个网页的某一块信息内容,往往需要 对该网页的数据内容进行-次复杂的解析,最后才将自己需要的信息内容提取出来,而一 旦换了另外一个网页进行抓取它的网页内容的话,又要重新设计程序的解析代码,这个过 程大量的工作重复,而且低效,因为所有的解析工作都是需要自己设计解析代码,而不是 采用系统的原生函数进行解析,所以往往容易解析出错,并且,一般的网民很难进行如此 复杂的操作。而本方法打破了传统信息抓取的对数据内容进行复杂解析的过程,采用了 javascript.调用系统自带的函数来直接读取网页中的内容,并且彻底地将信息抓取的条件 从程序中分离了出来。所以网民采用本方法对网页进行抓取的话,信息抓取稳定可靠,而 且不会解析出错,也不需要去关心抓取的过程是如何实现的,不用去修改抓取过程的程序 代码,而只需要做的是修改抓取的条件即可,由于抓取的条件可以采用xpat.h表达式或者 JQUERY ( —个javascript的框架)中的类似xpath的表达式来实现,所以对于网民来讲,学 习的成本低,可以很轻松的掌握,很大程度上提高抓取程序的开发效率。

发明内容
本发明所要解决的技术问题是提供一种通用的可用于任何网页的网页内容的抓 取方法。 为了解决上述技术问题,本发明采用以下的技术方案一种通用的可用于任何网 页的网页内容的抓取方法,包括以下步骤 —种通用的可用于任何网页的网页内容的抓取方法,包括以下步骤 1)客户端输入一个待抓取的目标网址和条件表达式,在客户端生成一个显示网页
所有内容的子页面; 2)客户端将条件表达式解析为节点标签名和条件的数组变量;
3)获取数组变量的单元变量,根据单元变量的标签名找出对应的节点,并判断这 些节点是否符合单元变量设定的条件,如果符合条件,则继续获取数组的下一个单元变量。 不断循环直到数组变量的长度为()为止。最后将符合最后一个单元变量的设定条件的所有 节点保存到--个数组变量; 4)客户端获取保存的数组变量中的所有节点的innerHTML属性值或者outerHTML 属性值。
其中步骤1)包含如下过程1a)客户端输入 -个网址和--个条件表达式,客户端用javascript脚本判断输入的网址是否合法,若检查结果合法,继续下一歩,否则提示重新输入网址;lb)客户端生成相应的子页面,并给子页面赋予一个网址,子页面独立请求服务器,服务器获取相应网址的网页所有内容,其中的内容是网页中的一个或者多个html元素。 其中步骤2)包含如F过程客户端先将条件表达式解析为具有父子结构的数组变量,前一个数组单元是后一个数组单元的父节点,然后再将每一个数组单元解析为具有节点标签名和节点条件的数组; 其中步骤3)包含如下过程获取数组变量的一个单元变量为当前单元变量,如果当前单元变量为第一个单元变量,则在子页面根据当前单元变量的节点标签名找出对应的节点。如果不是第一个单元变量,则在符合上一个单元变量条件的所有节点的子节点中根据当前变量的节点标签名找出对应的节点,遍历所有找出的节点,判断这些节点是否符合当前单元变量设定的条件,如果符合条件,则继续获取数组的下一个单元变量。重复步骤3直到数组变量的长度为0为止。最后将符合最后一个单元变量的设定条件的所有节点保存到一个数组变量nodes (nodes为设定的数组变量名); 其中步骤4)包含如下过程遍历变量nodes中的所有节点,并获取节点的innerHTML属性值或者outerHTML属性值保存到-一个新的数组变量。
本发明与现有技术相比具有以下的优点 a)只需要简单的修改条件表达式即可抓取网页中的任何内容,而无须针对每个
网页都写一份解析网页内容的代码; (2)条件表达式由于是自定义的,所以比较灵活,可以采用XPATH或者其他任何表达式来表示; (3)由于采用的是系统的javascript函数来解析HTML页面,所以不存在利用正则
表达式来做解析匹配时候的条件考虑不周导致的解析遗漏或者错误的问题; (4)大大便利了普通网民抓取互联网资源为己所用,提高效率。


图1、图2是本发明的详细流程图。
具体实施例方式—种通用的可用于任何网页的网页内容的抓取方法,包括以下步骤 1)客户端输入一个待抓取的目标网址和条件表达式,在客户端生成一个显示网页
所有内容的子页面; 2)客户端将条件表达式解析为节点标签和条件的数组变量; 3)遍历数组,在子页面找出符合条件的节点,并将符合最后一个条件的所有节点保存到一个数组变量; 4)客户端获取保存的数组变量中的所有节点的innerHTML属性值或者outerHTML属性值。 下面进一步详细说明本发明所述方法的具体步骤
参见图1、图2,在用户端输入一个合法的网址,(例如:丽.baidu. com),和条件表达式,(例如:/div
)向后台服务器发出请求,由服务器端程序分析输入的网址字符串,并检査网址是否合法(是否具备http:〃xxx或者xxx. xxx这样的形式),若检查结果合法,继续下一步,否则提示重新输入网址;客户端根据网址生成相应的子页面,并给子页面赋予--个网址,子页面独立请求服务器,获取相应网址的网页所有内容并显示,其中,网页内容是网页中的一个或者多个html元素,并将javascript.程序代码嵌入子页面,客户端获取父窗口上的条件表达式的值,并将之解析为具有父子结构的数组变量,前一个数组单元是后一个数组单元的父节点,然后再将每一个数组单元解析为具有节点标签名和节点条件的数组;具体方法是假设条件表达式是以'7"符号来表示父子节点的分割符号,"/"符号前的为父节点,'7"符号后的为子节点,则该数组变量可以通过javascript调用系统的方法split()通过如"条件表达式".split( "/")来将条件表达式转化为具有父子关系的数组变量a(a为设定的数组变量名)。遍历这个数组变量a,将数组变量a中的每-个单元变量分别解析为节点标签名(包括标准的标签名和自定义的特殊符号组成的标签)和节点匹配条件组成的数组变量b (b为设定的数组变量名),并遍历数组变量b,子页面的javascript程序使用 getElementsByTagName ()的方法来查找节点标签
对应的所有节点对象。遍历所有节点对象,javascript程序使用getAttribute()方法分别来获取这些节点对象的属性值,再与节点条件进行比较,若是符合匹配条件,则继续获取数组变量a的下一个单元变量。不断循环直到数组变量a的长度变为0,即条件表达式中的所有节点查找完毕,并将数组变量的最后一个单元匹配到的所有节点保存到一个数组变量match (match为设定的数组变量名) 客户端遍历数组变量match,取出每--个单元变量,再通过获取它们的innerHTML属性值或者outerHTML属性值来抓取对应的网页内容。
权利要求
一种通用的可用于任何网页的网页内容抓取的方法,包括以下步骤1)客户端输入一个待抓取的目标网址和条件表达式,在客户端生成一个显示网页所有内容的子页面;2)客户端将条件表达式解析为节点标签和条件的数组变量3)遍历数组,在子页面找出符合条件的节点,并将符合最后一个条件的所有节点保存到一个数组变量;4)客户端获取保存的数组变量中的所有节点的innerHTML属性值或者outerHTML属性值。
2. 如权利要求1所述的一种通用的可用于任何网页的网页内容抓取的方法,其特征 在于其中步骤1)包含如下过程la)客户端输入一个网址和一个条件表达式,客户端用 javascript.脚本判断输入的网址是否合法,若检查结果合法,继续下一步,否则提示重新 输入网址;lb)客户端生成相应的子页面,并给子页面赋予一个网址,子页面独立请求服务 器,服务器获取相应网址的网页所有内容。
3. 如权利要求1或2所述的一种通用的可用于任何网页的网页内容抓取的方法,其特 征在于用户可以用邓ath、css选择器或者程序中定义的规则来书写条件表达式。
4. 如权利要求1或2所述的一种通用的可用于任何网页的网页内容抓取的方法,其特征在于其中步骤2)包含如下过程客户端将条件表达式解析为包含节点标签名和节点条 件的数组变量;
5. 如权利要求2所述的一种通用的可用于任何网页的网页内容抓取的方法,其特 征在于在子页面增加一段javascript程序,该javascript程序将条件表达式解析为 javascript程序的包含节点标签和节点条件的数组变量。
6. 如权利要求3所述的一种通用的可用于任何网页的网页内容抓取的方法,其特征在 于其中步骤3)包含如F过程:3a)客户端获取数组变量的一个单元变量,并在子页面根据 单元变量的节点标签名查找节点;3b)将找到的节点和该节点对应的设定条件进行比较, 若符合条件,则进入下一步;3c)重复步骤3a),直到数组长度为()为止;3d)将符合最后一 个单元变量的设定条件的所有节点保存到一个数组变量nodes (nodes为设定的数组变量 名)。
7. 如权利要求3所述的一种通用的可用于任何网页的网页内容抓取的方法,其特征在 于javascript程序根据节点标签使用getElementsByTag'Name ()的方法来查找节点对象, javascript程序使用getAtt.ribute ()方法来获取节点的属性值,再与节点条件进行比较。
8. 如权利要求4所述的一种通用的可用于任何网页的网页内容抓取的方法,其特征在 于其中步骤4)包含如下过程遍历变量nodes中的所有节点,并获取节点的innerHTML属 性值或者outerHTML属性值保存到一个新的数组变量。
全文摘要
本发明名称是一种通用的可用于任何网页的网页内容抓取的方法,属于网络技术领域。采用的技术方案一种通用的用于任何网页的网页内容抓取方法。本发明提供一种通用的用于任何网页的网页内容抓取的方法。方法是用户输入要抓取的网址和条件表达式,创建子页面,并将网址和条件表达式发送给子页面,子页面请求服务器并获取该网址的网页所有内容,并给网页内容嵌入一段javascript程序。javascript程序将条件表达式转换为一个数组变量,javascript程序遍历数组,找出符合条件的所有节点。javascript程序获取所有节点的innerHTML或者outerHTML属性值来获取对应的网页内容。该方法能使用户只需简单地修改条件表达式即可抓取网页中的任何内容,而无须针对每个网页都写一份解析网页内容的代码。
文档编号G06F17/30GK101763425SQ20101000256
公开日2010年6月30日 申请日期2010年1月12日 优先权日2010年1月12日
发明者胡加明 申请人:苏州阔地网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1