一种网络信息抓取方法和装置制造方法

文档序号:6488145阅读:221来源:国知局
一种网络信息抓取方法和装置制造方法
【专利摘要】本发明的实施例公开了一种网络信息抓取方法和装置。涉及网络【技术领域】,能够直接获取动态网页中的URL和URL对应的内容。该方法包括:通过预设的浏览器客户端访问静态的统一资源定位符URL;获取静态的URL对应的超文本标记语言HTML文件;获取该HTML文件中对应可实现用户操作执行的脚本语言函数,该脚本语言函数包括:JavaScript脚本函数;解析该脚本语言函数,得到解析后的网页,并从该网页中抽取其他静态的URL,并将该网页存储,并应用正则表达式抽取其中的其他静态的URL。本发明应用于网络信息抓取。
【专利说明】一种网络信息抓取方法和装置
【技术领域】
[0001]本发明涉及网络【技术领域】,尤其涉及一种网络信息抓取方法和装置。
【背景技术】
[0002]现今很多的诸如购物搜索网站的产品开始注意到互联网中海量信息的获取和集成对于用户的重要性。在这些产品中,作为搜索引擎技术之一的网络抓取技术是整个构架出来的系统中非常重要的一个环节,能帮助各大搜索引擎抓取网页并构建网页数据库。网络抓取技术是指程序或脚本按一定的规则,自动地下载互联网中的特定内容的一项技术。网络抓取程序一般从某个特定的统一资源定位符(Uniform Resource Locator,简称URL)出发,获取访问该URL返回得到的超文本标记语(Hypertext Markup Language,简称HTML)网页,同时对该网页进行分析,从中抽取得到一系列相关的其他URL用于继续访问,从而得到一系列相关的HTML网页内容,直到遍历完整个网络,或者达到一定的条件后停止抓取。
[0003]在实现上述网络抓取的过程中,发明人发现大量的网站开始采用JavaScript、Ajax等技术制作动态网页来完善用户的交互与体验,但这些技术也给网络抓取带来了难度。现有的网络抓取技术获取的HTML网页一般为静态网页,静态网页的特点是其内容完全由访问的URL确定,并且不同的用户访问得到的内容都是一样的;然而动态网页除了能得到静态网页的内容,还含有大量必须通过执行客户端脚本才能够得到的URL,即在动态网页中,同一个URL,不同的用户访问所获取的网页内容是不同的,因此当需要针对不同用户获取不同的个性化数据时,现有的网络抓取技术无法直接获得动态网页中的URL和URL对应的内容。

【发明内容】

[0004]本发明的实施例提供了一种网络信息抓取方法和装置,用以获得动态网页中的URL和URL对应的内容。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]第一方面,提供一种网络信息抓取方法,包括:
[0007]通过预设的浏览器客户端访问静态的统一资源定位符URL ;
[0008]获取所述静态的URL对应的超文本标记语言HTML文件;
[0009]获取所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括JavaScript脚本语言函数;
[0010]解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页存储。
[0011]在第一种可能的实现方式中,根据第一方面,该方法还包括:
[0012]创建所述浏览器客户端网络连接;
[0013]设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。[0014]在第二种可能的实现方式中,结合第一方面或第一种可能的实现方式,具体实现为:解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL包括:通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
[0015]第二方面,提供了一种网络信息抓取装置,所述网络信息抓取装置包括:
[0016]网页地址访问单元,用于通过预设的浏览器客户端访问静态的URL ;
[0017]网页内容获取单元,用于获取所述静态的URL对应的超文本标记语言HTML文件;
[0018]网页脚本程序获取单元,用于获取所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括JavaScript脚本语言函数;
[0019]网页解析单元,用于解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页存储。
[0020]在第一种可能的实现方式中,根据第二方面,所述的网络信息抓取装置还包括:
[0021]网络连接单元,用于创建所述浏览器客户端网络连接;
[0022]浏览器设置单元,用于设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。
[0023]在第二种可能的实现方式中,结合第二方面或第一种可能的实现方式,所述网页解析单元,具体用于通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
[0024]第三方面,提供了一种网络信息抓取装置,所述网络信息抓取装置包括:至少一个入口端和一个出口端以及分别与所述入口端和所述出口端连接的处理器和存储器,其中:
[0025]所述处理器用于通过预设的浏览器客户端访问静态的URL ;所述存储器通过所述至少一个入口端获取所述静态的URL对应的超文本标记语言HTML文件;
[0026]所述处理器还用于获取所述存储器中所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括=JavaScript脚本语言函数;
[0027]所述处理器还用于解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页通过所述至少一个出口端发送至网页数据库存储。
[0028]在第一种可能的实现方式中,结合第三方面,所述处理器还用于创建所述浏览器客户端网络连接;设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括:JavaScript脚本语言。
[0029]在第二种可能的实现方式中,结合第三方面或第一种可能的实现方式,所述处理器具体用于通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
[0030]本发明的实施例提供的网络信息抓取方法和装置,采用对动态网页对应的静态的URL进行访问时在所得到的HTML文件中对可实现用户操作执行的脚本语言函数进行解析的方法,得到动态网页中的包含的其他URL,使得在进行网络信息的抓取时获取静态网页内容的同时还能获取动态网页中的URL和URL对应的内容。【专利附图】

【附图说明】
[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1为本发明实施例提供的一种网络信息抓取方法的流程示意图;
[0033]图2为本发明实施例提供的一种网络信息抓取装置的结构示意图;
[0034]图3为本发明实施例提供的另一种网络信息抓取装置的结构示意图;
[0035]图4为本发明另一实施例提供的一种网络信息抓取装置的结构示意图。
【具体实施方式】
[0036]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]本发明的实施例公开一种网络信息抓取方法,如图1所示,该方法包括如下步骤:
[0038]101、网络信息抓取装置通过预设的浏览器客户端访问静态的统一资源定位符URL。
[0039]进一步可选的,步骤101之前还包括:
[0040]101a、创建浏览器客户端网络连接;
[0041]101b、设置该浏览器客户端的浏览器版本及支持的脚本语言,该脚本语言包括:JavaScript脚本语言。
[0042]102、获取该静态的URL对应的超文本标记语言HTML文件。
[0043]103、获取该HTML文件中对应可实现用户操作执行的脚本语言函数,该脚本语言函数包括=JavaScript脚本函数。
[0044]104、解析该脚本语言函数,得到解析后的网页,并从网页中抽取其他静态的URL,并将该网页存储。
[0045]步骤104具体包括:通过页面解析工具解析脚本语言函数模拟用户操作,得到解析后的网页,并应用正则表达式抽取其中的其他静态的URL,所述解析工具包括:htmlunit分析工具。当然这里所模拟的用户操作可以为用户的点击动作。
[0046]可选的,这里可以配置只针对需要获取的内容对应的可实现用户操作执行的脚本语言函数进行解析,对其他的可实现用户操作执行的脚本语言函数不进行解析。
[0047]此外,在得到了解析后的网页的同时,还抽取出了解析后的网页中的其他静态的URL,对新抽取的其他静态的URL进行步骤101?104的过程,重复此过程,直到获取动态网页中所包含的全部需要内容为止。
[0048]本发明的实施例提供的网络信息抓取方法,采用对动态网页对应的静态的URL进行访问时在所得到的HTML文件中对可实现用户操作执行的脚本语言函数进行解析的方法,得到动态网页中的包含的其他URL,使得在进行网络信息的抓取时获取静态网页内容的同时还能获取动态网页中的URL和URL对应的内容。[0049]具体的,以爬取某网页作者信息为例,根据任意文章的URL访问到相应的网页页面,找到所要抓取的网页元素,模拟一次浏览器点击,得到新的网页并将新的网页进行存储。这里以摘要(Abstract)为将要抓取的网页元素为例进行说明。其程序实现过程可以包括:
[0050]KffebClient client = new WebClient () ;//建立了一个浏览器客户端的网络连接;
[0051]2、 client.setAjaxController(newNicelyResynchronizingAjaxController O) ;//设置浏览器客户端支持Ajax (基于JavaScript语言所实现的网页开发技术);
[0052]3> HtmlPage page = client.getPage (url) -J/ 获得 URL 对应的网页;
[0053]4、HtmlElement Abstract = (HtmlElement) page.getByXPath
[0054](" //span[contains (ititie, 1 Abstract</span>1 )]" ).get (0);
[0055]//用可扩展标记语言的路径语言(XML Path Language,简称xpath)得到摘要(Abstract)这一个网页元素;
[0056]具体的,在所爬取的此网页中不止摘要(Abstract)这一个网页元素,还包括:原始资料(Source Materials)和著作者(Authors),但这里只针对需要获取的内容对应的网页元素即摘要(Abstract)的脚本语言函数进行解析。
[0057]5、page = Abstract, click() ;// 模拟点击摘要(Abstract)这一个网页元素,并得到新的网页;
[0058]6、String xml = page.asXml () ;//将新的网页以可扩展标记语言(XtensibleMarkup Language,简称 XML)打印出来。
[0059]本发明的实施例提供的网络信息抓取方法,采用对动态网页对应的静态的URL进行访问时在所得到的HTML文件中对可实现用户操作执行的脚本语言函数进行解析的方法,得到动态网页中的包含的其他URL,使得在进行网络信息的抓取时获取静态网页内容的同时还能获取动态网页中的URL和URL对应的内容。
[0060]本发明的实施例公开了一种网络信息抓取装置2,如图2所示,网络信息抓取装置2包括:网页地址访问单元21、网页内容获取单元22、网页脚本程序获取单元23和网页解析单元24,其中:
[0061]网页地址访问单元21,用于通过预设的浏览器客户端访问静态的统一资源定位符URL ;
[0062]网页内容获取单元22,用于获取该静态的URL对应的超文本标记语言HTML文件;
[0063]网页脚本程序获取单元23,用于获取HTML文件中对应用户操作执行的脚本语言函数,该脚本语言函数包括JavaScript脚本函数;
[0064]网页解析单元24,用于解析脚本语言函数,得到解析后的网页,并从该网页中抽取其他静态的URL,并将该网页存储。
[0065]本发明的实施例提供的网络信息抓取装置,采用对动态网页对应的静态的URL进行访问时在所得到的HTML文件中对可实现用户操作执行的脚本语言函数进行解析的方法,得到动态网页中的包含的其他URL,使得在进行网络信息的抓取时获取静态网页内容的同时还能获取动态网页中的URL和URL对应的内容。[0066]进一步,可选的如图3所示,网络信息抓取装置2还包括:网络连接单元25和浏览器设置单元26,其中:
[0067]网络连接单元25,用于创建浏览器客户端网络连接;
[0068]浏览器设置单元26,用于设置浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。
[0069]可选的如图3所示,网页解析单元24具体用于通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
[0070]本实施例公开了一种网络信息抓取装置3,如图4所示,网络信息抓取装置3包括:至少一个入口端31和一个出口端32以及分别与入口端31和出口端32连接的处理器33和存储器34,其中:
[0071]处理器33用于通过预设的浏览器客户端访问静态的URL ;存储器34通过至少一个入口端获取该静态的URL对应的超文本标记语言HTML文件;
[0072]处理器33还用于获取存储器34中HTML文件中对应可实现用户操作执行的脚本语言函数,该脚本语言函数包括JavaScript脚本语言函数;
[0073]处理器33还用于解析脚本语言函数,得到解析后的网页,并从该网页中抽取其他静态的URL,并该网页通过至少一个出口端32发送至网页数据库存储。
[0074]本发明的实施例提供的网络信息抓取装置,采用对动态网页对应的静态的URL进行访问时在所得到的HTML文件中对可实现用户操作执行的脚本语言函数进行解析的方法,得到动态网页中的包含的其他URL,使得在进行网络信息的抓取时获取静态网页内容的同时还能获取动态网页中的URL和URL对应的内容。
[0075]进一步可选的,处理器33还用于创建浏览器客户端网络连接;设置浏览器客户端的浏览器版本及支持的脚本语言,脚本语言包括=JavaScript脚本语言。
[0076]可选的,处理器33具体用于通过页面解析工具解析脚本语言函数模拟用户操作,得到该解析后的网页,并应用正则表达式抽取其中的其他静态的URL,该解析工具包括:htmlunit分析工具。
[0077]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0078]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种网络信息抓取方法,其特征在于,包括: 通过预设的浏览器客户端访问静态的统一资源定位符URL ; 获取所述静态的URL对应的超文本标记语言HTML文件; 获取所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括=JavaScript脚本语言函数; 解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页存储。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 创建所述浏览器客户端网络连接; 设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。
3.根据权利要求1或2所述的方法,其特征在于,解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL包括: 通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
4.一种网络信息抓取装置,其特征在于,所述网络信息抓取装置包括: 网页地址访问单元,用于通过预设的浏览器客户端访问静态的URL ; 网页内容获取单元,用于获取所述静态的URL对应的超文本标记语言HTML文件; 网页脚本程序获取单元,用于获取所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括JavaScript脚本语言函数; 网页解析单元,用于解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页存储。
5.根据权利要求4所述的网络信息抓取装置,其特征在于,所述装置还包括: 网络连接单元,用于创建所述浏览器客户端网络连接; 浏览器设置单元,用于设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。
6.根据权利要求4或5所述的网络信息抓取装置,其特征在于,所述网页解析单元,具体用于通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
7.—种网络信息抓取装置,其特征在于,所述网络信息抓取装置包括:至少一个入口端和一个出口端以及分别与所述入口端和所述出口端连接的处理器和存储器,其中: 所述处理器用于通过预设的浏览器客户端访问静态的URL ;所述存储器通过所述至少一个入口端获取所述静态的URL对应的超文本标记语言HTML文件; 所述处理器还用于获取所述存储器中所述HTML文件中对应可实现用户操作执行的脚本语言函数,所述脚本语言函数包括JavaScript脚本语言函数; 所述处理器还用于解析所述脚本语言函数,得到解析后的网页,并从所述网页中抽取其他静态的URL,并将所述网页通过所述至少一个出口端发送至网页数据库存储。
8.根据权利要求7所述的网络信息抓取装置,其特征在于,所述处理器还用于创建所述浏览器客户端网络连接;设置所述浏览器客户端的浏览器版本及支持的脚本语言,所述脚本语言包括JavaScript脚本语言。
9.根据 权利要求7或8所述的网络信息抓取装置,其特征在于,所述处理器具体用于通过页面解析工具解析所述脚本语言函数模拟用户操作,得到所述解析后的网页,并应用正则表达式抽取其中的所述其他静态的URL,所述解析工具包括:htmlunit分析工具。
【文档编号】G06F17/30GK103631806SQ201210305527
【公开日】2014年3月12日 申请日期:2012年8月24日 优先权日:2012年8月24日
【发明者】邓志鸿, 张 杰, 赖博彦, 刘河 申请人:华为技术有限公司, 北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1