一种完整采集网页信息的方法和系统的制作方法

文档序号:6401061阅读:143来源:国知局
专利名称:一种完整采集网页信息的方法和系统的制作方法
技术领域
本发明涉及网页信息采集领域,具体涉及一种完整采集网页信息的方法和系统。
背景技术
随着互联网技术的发展,用户可以通过互联网获取各种各样的信息。目前,互联网上的网页分为静态网页和动态网页。所谓静态网页,指的是预先编译好并存储在服务器上的网页文件,静态网页不含程序也不能交互,因此静态网页在服务器中没有对应的数据库,通过链接地址链接到该预先编译好的静态网页文件所在的服务器即可完成该静态网页信息的采集,而动态网页是相对静态网页而言的,动态网页不是独立存在于服务器上的网页文件,动态网页只在与服务器交互时动态生成,动态网页一般在服务器上设置针对该网页的数据库以及程序,用户必须通过与服务器进行交互来实现对网页信息的采集。中国专利文献CN101996196A公开了一种动态网页的采集方法,具体公开了在客户端侧预先设置模拟用户行为功能,具体通过具有配置文件的浏览器模拟用户行为,在采集动态网页时,首先和提供动态网页信息的服务器建立链接,通过设置的模拟用户行为功能下载动态网页信息,对下载的动态网页信息中的表项解析、填写并发送给服务器后,按照静态网页的采集方法采集动态网页。上述专利文献中,通过具有配置文件的浏览器模拟用户行为,因为配置文件本身只包含了输入交互行为,对于基于AJAX技术的动态网页而言,交互的过程中服务器返回的只是网页的部分信息,基于配置文件采集基于AJAX技术的动态网页信息无法获取AJAX动态生成的部分链接的链接页面及请求结果。因此,上述专利文献中公开的动态网页采集方法只适用于论坛类以及搜索类等未使用AJAX技术的传统动态网页的数据的采集,而对于采用AJAX技术的社区交互网站,如BBS、博客和微博等,该方法就无法实现对其网页上的信息完整和全面的采集,上述专利文献公开的方法的使用范围受限,通用性较差。

发明内容
为此,本发明所要解决的一个问题是上述专利文献公开的动态网页采集方法无法获取AJAX动态生成的部分链接的链接页面及请求结果从而无法实现对基于AJAX技术的动态网页上的信息进行完整和全面的采集的技术问题,从而提供一种完整采集网页信息的方法和系统。为达到上述目的,本发明的技术方案是这样实现的:一种完整采集网页信息的方法,包括如下步骤:S1:在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果;S2:后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果;
S3:将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中;S4:后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。步骤SI具体包括如下步骤:S10:在所述浏览器中的地址栏中输入网站的入口地址;Sll:在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息;S12:在得到的响应页面中模拟用户浏览浏览器的行为与网站进行交互;S13:保存交互过程中产生的URL请求和服务器返回的所述第一响应结果。步骤S2具体包括如下步骤:S20:初始化后台运行的所述浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息;S21:所述WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求;S22:后台运行的所述浏览器保存服务器返回的第二响应结果。步骤S4具体包括如下步骤:S40:后台运行的所述浏览器根据补充后的所述第二响应结果构造目标页面的抓取逻辑;S41:后台运行的所述浏览器根据所述抓取逻辑抓取目标页面;S42:构造目标页面内容的抓取逻辑,按照抓取逻辑抓取页面内容并将抓取内容保存。步骤S40具体包括如下步骤:S401:所述浏览器提取目标页面的标识信息;S402:对比提取出的目标页面的所述标识信息和所述目标页面的URL ;S403:将所述URL对应的标识信息用参数值替代,根据所述参数值构造目标页面的抓取逻辑;步骤S42具体包括如下步骤:S420:获取目标页面的Dom树;S421:将所述Dom树中包含用户关心的元素提取到抓取列表中;S422:将所述抓取列表中的元素按一定顺序排列,形成页面内容的抓取逻辑;S423:按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。步骤SI中的所述浏览器采用FireFox浏览器、Chrome浏览器或者IE浏览器;步骤S2中的后台运行的所述浏览器采用HtmlUnit或者WebDriver。同时,提供一种完整采集网页信息的系统,包括:第一模拟模块,用于在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果;第二模拟模块,用于后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果;补充模块,用于将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中;采集模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。所述第一模拟模块包括:输入子模块,用于在所述浏览器中的地址栏中输入网站的入口地址;提交子模块,用于在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息;第一模拟子模块,用于在得到的响应页面中模拟用户浏览浏览器的行为与网站进行交互;第一保存子模块,用于保存交互过程中产生的URL请求和服务器返回的所述第一响应结果。所述第二模拟模块包括:初始化子模块,用于初始化后台运行的所述浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息;第二模拟子模块,用于所述WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求;第二保存子模块,用于后台运行的浏览器保存服务器返回的第二响应结果。所述采集模块包括:构造子模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果构造目标页面的抓取逻辑;第一抓取子模块,用于所述浏览器根据所述抓取逻辑抓取目标页面;第二抓取子模块,用于构造目标页面内容的抓取逻辑,按照抓取逻辑抓取页面内容并将抓取内容保存。所述构造子模块包括:提取子子模块,用于所述浏览器提取目标页面的标识信息;对比子子模块,用于对比提取出的目标页面的所述标识信息和所述目标页面的URL ;第一抓取子子模块,用于将所述URL对应的标识信息用参数值替代,根据所述参数值构造目标页面的抓取逻辑。所述第二抓取子模块包括:获取子子模块,用于获取目标页面的Dom树;第二抓取子子模块,用于将所述Dom树中包含用户关心的元素提取到抓取列表中;排序子子模块,用于将所述抓取列表中的元素按一定顺序排列,形成页面内容的抓取逻辑;第三抓取子子模块,用于按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。
所述第一模拟模块中的所述浏览器采用FireFox浏览器、Chrome浏览器或者IE浏览器;所述第二模拟模块中的所述浏览器采用HtmlUnit或者WebDriver。本发明的上述技术方案相比现有技术具有以下优点:本发明所述的完整采集网页信息的方法和系统,先由安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果,所述第一响应结果包括所有动态网页信息和静态网页信息,其中,动态网页信息中包括AJAX动态生成的链接页面信息;然后再由后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果,最后将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中,此时第二响应结果中包括AJAX动态生成的部分链接的链接页面信息,所述后台运行的所述浏览器根据补充后的所述第二响应结果可完成所有网页信息的采集,且不占用浏览器的资源。解决了现有技术中动态网页采集方法无法获取AJAX动态生成的链接页面的问题。


为了使本发明的内容更容易被清楚的理解,下面结合附图,对本发明作进一步详细的说明,其中,图1是本发明一个实施例的一种完整采集网页信息的方法流程图;图2是本发明一个实施例的一种完整采集网页信息的系统结构框图。
具体实施例方式本发明一个实施例的一种完整采集网页信息的方法流程图,如图1所示,S1:在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果;其中,所述FireBug插件用于保存所有URL请求及服务器返回的包括所述URL的第一响应结果,所述Cookies Manager插件用于保存Cookies登陆信息;所述第一响应结果为通过模拟用户浏览浏览器的行为所得到的页面响应信息。S2:后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果;所述第二响应结果为通过Cookies登录信息所得到的页面响应信息。S3:将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中;所述第一响应结果中存在的所述第二响应结果没有的网页信息指通过Cookies登陆信息访问网页过程中AJAX动态生成的网页信息;S4:后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。这种采集方式解决了现有技术中动态网页采集方法无法获取AJAX动态生成的链接页面的问题,并且该采集方式不占用浏览器的资源。以BBS网站的信息采集为例,BBS网站含有AJAX动态生成的网页,具体说明本发明上述实施例的完整抓取网页信息的方法,参见图2所示,其包括如下步骤:SlO:在安装有FireBug插件以及Cookies Manager插件的FireFox浏览器中的地址栏中输入网站的入口地址;Sll:在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息;S12:在得到的响应页面中模拟用户浏览浏览器的行为,包括下拉滚动条、点击帖子链接、点击回复者链接、点击回复下一页链接、点击回复数、点击浏览数、点击帖子列表下一页,通过这些行为与网站进行交互;将每次用户的交互操作所产生的URL请求及第一响应结果保存到FireBug中。初始化Htmlunit浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息;WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求,Htmlunit浏览器保存服务器返回的第二响应结果。将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中。Htmlunit浏览器提取目标页面的标识信息,包括用户ID、页数、列表起止编号等;对比提取出的目标页面的所述标识信息和所述目标页面的URL ;将所述URL对应的标识信息用参数值(0、1、2等)替代,根据所述参数值构造的目标页面的抓取逻辑抓取目标页面;获取目标页面的Dom树;将所述Dom树中包含用户关心的元素,包括版主信息、统计信息、帖子详细信息、回复信息、回复者信息提取到抓取列表中;将所述抓取列表中的元素按内容大小的顺序排列,从而形成页面内容的抓取逻辑;按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。基于同一发明构思,本发明还提供一种完整采集网页信息的系统,包括:第一模拟模块,用于在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果;第二模拟模块,用于后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果;补充模块,用于将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中;采集模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。所述第一模拟模块包括:输入子模块,用于在所述浏览器中的地址栏中输入网站的入口地址;提交子模块,用于在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息;
第一模拟子模块,用于在得到的响应页面中模拟用户浏览浏览器的行为,包括下拉滚动条、点击帖子链接、点击回复者链接、点击回复下一页链接、点击回复数、点击浏览数、点击帖子列表下一页,通过这些行为与网站进行交互;第一保存子模块,用于保存交互过程中产生的URL请求和服务器返回的所述第一响应结果,即将每次用户的交互操作所产生的URL请求及所述第一响应结果保存到FireBug 中。所述第二模拟模块包括:初始化子模块,用于初始化后台运行的所述浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息;第二模拟子模块,用于所述WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求;第二保存子模块,用于后台运行的浏览器保存服务器返回的第二响应结果,SPHtmlunit浏览器保存服务器返回的第二响应结果。所述采集模块包括:构造子模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果构造目标页面的抓取逻辑;第一抓取子模块,用于所述浏览器根据所述抓取逻辑抓取目标页面;第二抓取子模块,用于构造目标页面内容的抓取逻辑,按照抓取逻辑抓取页面内容并将抓取内容保存。所述构造子模块包括:提取子子模块,用于所述浏览器提取目标页面的标识信息,即Htmlunit浏览器提取目标页面的标识信息,包括用户ID、页数、列表起止编号等;对比子子模块,用于对比提取出的目标页面的所述标识信息和所述目标页面的URL,即对比提取出的目标页面的所述标识信息和所述目标页面的URL ;将所述URL对应的标识信息用参数值(0、1、2等)替代,根据所述参数值构造的目标页面的抓取逻辑抓取目标页面;第一抓取子子模块,用于将所述URL对应的标识信息用参数值替代,根据所述参数值构造目标页面的抓取逻辑。所述第二抓取子模块包括:获取子子模块,用于获取目标页面的Dom树,将所述Dom树中包含用户关心的元素,包括版主信息、统计信息、帖子详细信息、回复信息、回复者信息提取到抓取列表中;第二抓取子子模块,用于将所述Dom树中包含用户关心的元素提取到抓取列表中;排序子子模块,用于将所述抓取列表中的元素按内容大小的顺序排列,形成页面内容的抓取逻辑;第三抓取子子模块,用于按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。在本实施例中,所述第一模拟模块中的所述浏览器采用FireFox浏览器、Chrome浏览器或者IE浏览器;所述第二模拟模块中的所述浏览器采用HtmlUnit或者WebDriver。
本发明所述的完整采集网页信息的方法和系统,先由安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果,所述第一响应结果包括所有动态网页信息和静态网页信息,其中,动态网页信息中包括AJAX动态生成的链接页面信息;然后再由后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果,最后将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中,此时第二响应结果中包括AJAX动态生成的部分链接的链接页面信息,所述后台运行的所述浏览器根据补充后的所述第二响应结果可完成所有网页信息的采集,且不占用浏览器的资源。解决了现有技术中动态网页采集方法无法获取AJAX动态生成的链接页面的问题。显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
权利要求
1.一种完整采集网页信息的方法,其特征在于,包括如下步骤: S1:在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果; S2:后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果; S3:将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中; S4:后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。
2.根据权利要求1所述的方法,其特征在于,步骤SI具体包括如下步骤: 510:在所述浏览器中的地址栏中输入网站的入口地址; 511:在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息; 512:在得到的响应页面中模拟用户浏览浏览器的行为与网站进行交互; 513:保存交互过程中产生的URL请求和服务器返回的所述第一响应结果。
3.根据权利要求1或2所述的方法,其特征在于,步骤S2具体包括如下步骤: 520:初始化后台运行的所述浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息; 521:所述WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求; S22:后台运行的所述浏览器保存服务器返回的第二响应结果。
4.根据权利要求1-3任一所述的方法,其特征在于,步骤S4具体包括如下步骤: 540:后台运行的所述浏览器根据补充后的所述第二响应结果构造目标页面的抓取逻辑; 541:后台运行的所述浏览器根据所述抓取逻辑抓取目标页面; 542:构造目标页面内容的抓取逻辑,按照抓取逻辑抓取页面内容并将抓取内容保存。
5.根据权利要求4所述的方法,其特征在于, 步骤S40具体包括如下步骤: 5401:所述浏览器提取目标页面的标识信息; 5402:对比提取出的目标页面的所述标识信息和所述目标页面的URL ; 5403:将所述URL对应的标识信息用参数值替代,根据所述参数值构造目标页面的抓取逻辑; 步骤S42具体包括如下步骤: 5420:获取目标页面的Dom树; 5421:将所述Dom树中包含用户关心的兀素提取到抓取列表中; 5422:将所述抓取列表中的元素按一定顺序排列,形成页面内容的抓取逻辑; 5423:按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。
6.根据权利要 求1-5任一所述的方法,其特征在于,步骤SI中的所述浏览器采用FireFox浏览器、Chrome浏览器或者IE浏览器;步骤S2中的后台运行的所述浏览器采用HtmlUnit 或者 WebDriver。
7.一种完整采集网页信息的系统,其特征在于,包括: 第一模拟模块,用于在安装有FireBug插件以及Cookies Manager插件的浏览器中模拟用户浏览浏览器的行为并保存浏览过程中产生的Cookies登陆信息、所有URL请求及服务器返回的包括所述URL的第一响应结果; 第二模拟模块,用于后台运行的浏览器根据上述浏览器中保存的所述Cookies登录信息模拟用户浏览浏览器的行为并保存浏览过程中产生的服务器返回的包括URL的第二响应结果; 补充模块,用于将所述第一响应结果中存在的所述第二响应结果没有的网页信息补充到所述第二响应结果中; 采集模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果进行网页信息的采集,并将采集结果保存。
8.根据权利要求7所述的系统,其特征在于,所述第一模拟模块包括: 输入子模块,用于在所述浏览器中的地址栏中输入网站的入口地址; 提交子模块,用于在请求得到的页面中输入登录信息,点击提交按钮,并保存Cookies登陆信息; 第一模拟子模块,用于在得到的响应页面中模拟用户浏览浏览器的行为与网站进行交互; 第一保存子模块,用于保存交互过程中产生的URL请求和服务器返回的所述第一响应结果。
9.根据权利要求7所述的系统,其特征在于,所述第二模拟模块包括: 初始化子模块,用于初始化后台运行的所述浏览器的WebClient对象并向该WebClient对象中添加所述Cookies登录信息; 第二模拟子模块,用于所述WebClient对象模拟用户浏览浏览器的行为向服务器发送URL请求; 第二保存子模块,用于后台运行的浏览器保存服务器返回的第二响应结果。
10.根据权利要求7所述的系统,其特征在于,所述采集模块包括: 构造子模块,用于后台运行的所述浏览器根据补充后的所述第二响应结果构造目标页面的抓取逻辑; 第一抓取子模块,用于所述浏览器根据所述抓取逻辑抓取目标页面; 第二抓取子模块,用于构造目标页面内容的抓取逻辑,按照抓取逻辑抓取页面内容并将抓取内容保存。
11.根据权利要求10所述的系统,其特征在于, 所述构造子模块包括: 提取子子模块,用于所述浏览器提取目标页面的标识信息; 对比子子模块,用于对比提取出的目标页面的所述标识信息和所述目标页面的URL ;第一抓取子子模块,用于将所述URL对应的标识信息用参数值替代,根据所述参数值构造目标页面的抓取逻辑。
12.根据权利要求10所述的系统,其特征在于,所述第二抓取子模块包括: 获取子子模块,用于获取目标页面的Dom树;第二抓取子子模块,用于将所述Dom树中包含用户关心的元素提取到抓取列表中;排序子子模块,用于将所述抓取列表中的元素按一定顺序排列,形成页面内容的抓取逻辑; 第三抓取子子模块,用于按照抓取逻辑抓取页面内容并抓取的内容保存至数据库。
13.根据权利要求7所述的系统,其特征在于,所述第一模拟模块中的所述浏览器采用FireFox浏览器、Chrome浏览器或者IE浏览器;所述第二模拟模块中的所述浏览器采用HtmlUnit 或者 W ebDriver。
全文摘要
本发明涉及一种完整采集网页信息的方法和系统,包括如下步骤①在安装有FireBug以及Cookies Manager的浏览器中模拟用户浏览浏览器的行为并保存Cookies信息、所有URL请求及服务器返回的第一响应结果;②后台运行的浏览器模拟用户浏览浏览器的行为并保存第二响应结果;③将第一响应结果中存在的第二响应结果没有的网页信息补充到第二响应结果中;④后台运行的浏览器根据补充后的第二响应结果进行网页信息的采集,并保存。本发明所述的完整采集网页信息的方法和系统,后台运行的浏览器根据补充后的第二响应结果可完成所有网页信息的采集,且不占用浏览器的资源,从而解决了现有技术中动态网页采集方法无法获取AJAX动态生成的链接页面的问题。
文档编号G06F17/30GK103186670SQ20131010258
公开日2013年7月3日 申请日期2013年3月27日 优先权日2013年3月27日
发明者全小飞, 柳香 申请人:中金数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1