一种基于浏览器插件的网络爬虫系统的制作方法

文档序号:17587674发布日期:2019-05-03 21:28阅读:1336来源:国知局

本发明涉及网络爬虫技术领域,提供了一种基于浏览器插件的网络爬虫系统。



背景技术:

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的url开始,获得初始网页上的url,在抓取网页的过程中,不断从当前页面上抽取新的url放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的url队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页url,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。

现有技术:

方案一:主流的网络爬虫系统(如开源项目scrapy),通过在服务器端,模拟浏览器发起网络请求,模拟浏览器网页渲染过程,获取网页最终源代码。

方案二:一种基于浏览器内核的网络爬虫系统如专利:201611005039.8

现有技术缺点

方案一缺点:在服务器端模拟浏览器发起网络请求,模拟浏览器网页渲染过程的方式,与浏览器实际打开网页,始终存在偏差。在某些情况下,比如不支持最新的js/css规范,模拟的结果会出现错误。然而开发一款新的模拟浏览器,其花费的代价太大,导致现有的模拟浏览器已经不能适应目前现有的各种网页类型。

方案二优点:基于浏览器的网络爬虫系统,解决了方案一的缺点,即直接通过浏览器而非模拟器,得到网页最终源代码。

方案二缺点:基于浏览器内核开发,需要修改浏览器内核代码,重新编译得到新的浏览器,对开发人员要求高,开发速度慢,开发成本高,难以快速满足定制化数据爬取需求。



技术实现要素:

本发明解决的问题如下:传统的爬虫程序,需要实现模拟器来完成网页的渲染过程。模拟器需要模拟执行html、js、css代码,并兼容不同版本,工作量大实现难度高。

由于传统的思路都是在后端实现爬虫,后端程序员对浏览器插件不熟悉,将两者结合相当于跨领域,要求知识全面,一般人想不到,所以主流方案并没有采用这种方式。

为解决上述技术问题,本发明采用以下技术方案:

一种基于浏览器插件的网络爬虫方法,包括以下步骤:

步骤s1、打开种子网页,浏览器发起网络请求加载网页初始源代码;

步骤s2、浏览器获取网页初始源代码后,执行网页初始源代码中的html、css、js代码,得到网页中间源代码;

步骤s3、浏览器执行网页中间源代码中的动态js代码,发起ajax请求,获取网页数据;

步骤s4、浏览器获取网页数据后,根据网页中间源代码中的js代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;

步骤s5、浏览器渲染得到网页最终源代码后,触发网页加载完成事件;

步骤s6、插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;

步骤s7、插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;

步骤s8、插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;

步骤s9、插件的网页处理程序,解析网页最终源代码的所有网页url,去重后保存至待抓取队列中,得到下一步待抓取的网页;

步骤10、插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页url,调用浏览器打开新标签接口,打开该网页url,并跳转至步骤s6完成下一个网页抓取;

步骤s11、插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。

一种基于浏览器插件的网络爬虫装置,包括以下装置:

加载模块:打开种子网页,浏览器发起网络请求加载网页初始源代码;

中间源代码生成装置:浏览器获取网页初始源代码后,执行网页初始源代码中的html、css、js代码,得到网页中间源代码;

网页数据获取模块:浏览器执行网页中间源代码中的动态js代码,发起ajax请求,获取网页数据;

渲染模块:浏览器获取网页数据后,根据网页中间源代码中的js代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;

触发模块:浏览器渲染得到网页最终源代码后,触发网页加载完成事件;

监听模块:插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;

网页处理模块:插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;

下载模块:插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;

待抓取网页模块:插件的网页处理程序,解析网页最终源代码的所有网页url,去重后保存至待抓取队列中,得到下一步待抓取的网页;

循环调度模块:插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页url,调用浏览器打开新标签接口,打开该网页url,并跳转至监听模块完成下一个网页抓取;

结束判断模块:插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。

因为本发明采用了以上技术方案,因此具备以下有益效果:

一、基于插件开发网络爬虫系统,简单易行,成本低。

二、直接通过浏览器而非模拟器,得到网页最终源代码,不存在模拟偏差。也不需要额外开发模拟浏览器。

三、以插件的形式通过浏览器接口即可获取浏览器能力,不需要修改浏览器内核代码,插件开发简单快速。

四、基于浏览器插件实现网络爬虫,无须修改内核代码,即可获取浏览器各种能力,简单高效。

五、本发明克服了现有技术的技术偏见,由于传统的思路都是在后端实现爬虫,从前端浏览器插件实现爬虫,克服了传统爬虫模拟浏览器的弊端,且插件可快速配合浏览器进行扩展。

具体实施方式

下面将结合具体实施方式对本发明作进一步的描述。

一种基于浏览器插件的网络爬虫方法,包括以下步骤:

步骤s1、打开种子网页,浏览器发起网络请求加载网页初始源代码;

步骤s2、浏览器获取网页初始源代码后,执行网页初始源代码中的html、css、js代码,得到网页中间源代码;

步骤s3、浏览器执行网页中间源代码中的动态js代码,发起ajax请求,获取网页数据;

步骤s4、浏览器获取网页数据后,根据网页中间源代码中的js代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;

步骤s5、浏览器渲染得到网页最终源代码后,触发网页加载完成事件;

步骤s6、插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;

步骤s7、插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;

步骤s8、插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;

步骤s9、插件的网页处理程序,解析网页最终源代码的所有网页url,去重后保存至待抓取队列中,得到下一步待抓取的网页;

步骤10、插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页url,调用浏览器打开新标签接口,打开该网页url,并跳转至步骤s6完成下一个网页抓取;

步骤s11、插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。

一种基于浏览器插件的网络爬虫装置,包括以下装置:

加载模块:打开种子网页,浏览器发起网络请求加载网页初始源代码;

中间源代码生成装置:浏览器获取网页初始源代码后,执行网页初始源代码中的html、css、js代码,得到网页中间源代码;

网页数据获取模块:浏览器执行网页中间源代码中的动态js代码,发起ajax请求,获取网页数据;

渲染模块:浏览器获取网页数据后,根据网页中间源代码中的js代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;

触发模块:浏览器渲染得到网页最终源代码后,触发网页加载完成事件;

监听模块:插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;

网页处理模块:插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;

下载模块:插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;

待抓取网页模块:插件的网页处理程序,解析网页最终源代码的所有网页url,去重后保存至待抓取队列中,得到下一步待抓取的网页;

循环调度模块:插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页url,调用浏览器打开新标签接口,打开该网页url,并跳转至监听模块完成下一个网页抓取;

结束判断模块:插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。

以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1