CN109710831A - 一种基于浏览器插件的网络爬虫系统 - Google Patents
一种基于浏览器插件的网络爬虫系统 Download PDFInfo
- Publication number
- CN109710831A CN109710831A CN201811629485.5A CN201811629485A CN109710831A CN 109710831 A CN109710831 A CN 109710831A CN 201811629485 A CN201811629485 A CN 201811629485A CN 109710831 A CN109710831 A CN 109710831A
- Authority
- CN
- China
- Prior art keywords
- webpage
- browser
- plug
- code
- web page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及网络爬虫技术领域,提供了一种基于浏览器插件的网络爬虫系统。主旨在于解决传统爬虫方式采用模拟器在模拟执行HTML、JS、CSS代码时不同版本兼容差,工作量大实现难度高的问题。其主要技术方案为:步骤1、打开种子网页,浏览器发起网络请求加载网页,步骤2、浏览器执行网页HTML、JS、CSS代码,浏览器发起Ajax请求获取数据;步骤3、浏览器渲染得到最终网页源代码,并展现给用户;步骤4插件监听浏览器网页加载完成事件;步骤5浏览器完成当前网页加载,插件收到通知;步骤6插件调用浏览器获取网页源代码接口,得到网页源代码;步骤7插件调用浏览器下载接口,将网页源代码保存至本地。
Description
技术领域
本发明涉及网络爬虫技术领域,提供了一种基于浏览器插件的网络爬虫系统。
背景技术
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的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,并跳转至监听模块完成下一个网页抓取;
结束判断模块:插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。
以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。
Claims (2)
1.一种基于浏览器插件的网络爬虫方法,其特征在于,包括以下步骤:
步骤S1、打开种子网页,浏览器发起网络请求加载网页初始源代码;
步骤S2、浏览器获取网页初始源代码后,执行网页初始源代码中的HTML、
CSS、JS代码,得到网页中间源代码;
步骤S3、浏览器执行网页中间源代码中的动态JS代码,发起Ajax请求,获取网页数据;
步骤S4、浏览器获取网页数据后,根据网页中间源代码中的JS代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;
步骤S5、浏览器渲染得到网页最终源代码后,触发网页加载完成事件;
步骤S6、插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;
步骤S7、插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;
步骤S8、插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;
步骤S9、插件的网页处理程序,解析网页最终源代码的所有网页URL,去重后保存至待抓取队列中,得到下一步待抓取的网页;
步骤10、插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页URL,调用浏览器打开新标签接口,打开该网页URL,并跳转至步骤S6完成下一个网页抓取:
步骤S11、插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。
2.一种基于浏览器插件的网络爬虫装置,其特征在于,包括以下装置:
加载模块:打开种子网页,浏览器发起网络请求加载网页初始源代码;
中间源代码生成装置:浏览器获取网页初始源代码后,执行网页初始源代码中的HTML、CSS、JS代码,得到网页中间源代码;
网页数据获取模块:浏览器执行网页中间源代码中的动态JS代码,发起Ajax请求,获取网页数据;
渲染模块:浏览器获取网页数据后,根据网页中间源代码中的JS代码逻辑,将数据插入到网页中间源代码中,渲染得到网页最终源代码;
触发模块:浏览器渲染得到网页最终源代码后,触发网页加载完成事件;
监听模块:插件监听浏览器网页加载完成事件,当浏览器出发网页加载完成事件时,插件收到浏览器通知,调起插件的网页处理程序;
网页处理模块:插件的网页处理程序,通过调用浏览器获取网页源代码接口,得到网页最终源代码;
下载模块:插件的网页处理程序,通过将网页最终源代码作为接口参数,调用浏览器下载接口,将网页最终源代码下载至本地,完成当前网页的爬取;
待抓取网页模块:插件的网页处理程序,解析网页最终源代码的所有网页URL,去重后保存至待抓取队列中,得到下一步待抓取的网页;
循环调度模块:插件的抓取调度程序,轮询检查待抓取队列,如果待抓取队列不为空,则根据先进先出的原则,从队列中取出最先进入队列的网页URL,调用浏览器打开新标签接口,打开该网页URL,并跳转至监听模块完成下一个网页抓取;
结束判断模块:插件的抓取调度程序,轮询检查待抓取队列,如果抓取队列为空,则所有网页抓取结束,结束本次抓取任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629485.5A CN109710831A (zh) | 2018-12-28 | 2018-12-28 | 一种基于浏览器插件的网络爬虫系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629485.5A CN109710831A (zh) | 2018-12-28 | 2018-12-28 | 一种基于浏览器插件的网络爬虫系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109710831A true CN109710831A (zh) | 2019-05-03 |
Family
ID=66259178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811629485.5A Pending CN109710831A (zh) | 2018-12-28 | 2018-12-28 | 一种基于浏览器插件的网络爬虫系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710831A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177623A (zh) * | 2019-12-23 | 2020-05-19 | 北京健康之家科技有限公司 | 信息处理方法及装置 |
CN111414525A (zh) * | 2020-03-25 | 2020-07-14 | 深圳市腾讯网域计算机网络有限公司 | 小程序的数据获取方法、装置、计算机设备和存储介质 |
CN111737629A (zh) * | 2020-07-02 | 2020-10-02 | 杭州海康威视数字技术股份有限公司 | 一种数据探测方法及装置 |
CN113971234A (zh) * | 2021-10-27 | 2022-01-25 | 湖北天融信网络安全技术有限公司 | 一种数据爬取方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078875A1 (en) * | 2010-09-27 | 2012-03-29 | Michael Price | Web browser contacts plug-in |
CN103440139A (zh) * | 2013-09-11 | 2013-12-11 | 北京邮电大学 | 一种面向主流微博网站微博id的采集方法及工具 |
CN103475687A (zh) * | 2013-05-24 | 2013-12-25 | 北京网秦天下科技有限公司 | 用于下载网站数据的分布式方法和系统 |
CN109063144A (zh) * | 2018-08-07 | 2018-12-21 | 广州金猫信息技术服务有限公司 | 可视化网络爬虫方法及装置 |
-
2018
- 2018-12-28 CN CN201811629485.5A patent/CN109710831A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078875A1 (en) * | 2010-09-27 | 2012-03-29 | Michael Price | Web browser contacts plug-in |
CN103475687A (zh) * | 2013-05-24 | 2013-12-25 | 北京网秦天下科技有限公司 | 用于下载网站数据的分布式方法和系统 |
CN103440139A (zh) * | 2013-09-11 | 2013-12-11 | 北京邮电大学 | 一种面向主流微博网站微博id的采集方法及工具 |
CN109063144A (zh) * | 2018-08-07 | 2018-12-21 | 广州金猫信息技术服务有限公司 | 可视化网络爬虫方法及装置 |
Non-Patent Citations (1)
Title |
---|
魏少鹏: "基于Chrome浏览器插件的爬虫系统", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177623A (zh) * | 2019-12-23 | 2020-05-19 | 北京健康之家科技有限公司 | 信息处理方法及装置 |
CN111414525A (zh) * | 2020-03-25 | 2020-07-14 | 深圳市腾讯网域计算机网络有限公司 | 小程序的数据获取方法、装置、计算机设备和存储介质 |
CN111414525B (zh) * | 2020-03-25 | 2024-01-02 | 深圳市腾讯网域计算机网络有限公司 | 小程序的数据获取方法、装置、计算机设备和存储介质 |
CN111737629A (zh) * | 2020-07-02 | 2020-10-02 | 杭州海康威视数字技术股份有限公司 | 一种数据探测方法及装置 |
CN113971234A (zh) * | 2021-10-27 | 2022-01-25 | 湖北天融信网络安全技术有限公司 | 一种数据爬取方法、装置、电子设备及存储介质 |
CN113971234B (zh) * | 2021-10-27 | 2023-03-10 | 湖北天融信网络安全技术有限公司 | 一种数据爬取方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710831A (zh) | 一种基于浏览器插件的网络爬虫系统 | |
CN106021257B (zh) | 一种支持在线编程的爬虫抓取数据方法、装置及系统 | |
CN105243159B (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫系统 | |
CN107729564A (zh) | 一种分布式的聚焦网络爬虫网页爬取方法及系统 | |
CN103475687B (zh) | 用于下载网站数据的分布式方法和系统 | |
CN102054028B (zh) | 一种网络爬虫系统实现页面渲染功能的方法 | |
CN102375951A (zh) | 网页安全检测方法和系统 | |
CN104021231B (zh) | 浏览器中显示网页的方法和装置 | |
CN104424018B (zh) | 分布式计算事务处理方法及装置 | |
CN102937989B (zh) | 并行化分布式互联网数据抓取方法及其系统 | |
CN103092936B (zh) | 一种物联网动态页面实时信息采集方法 | |
CN103049383A (zh) | 一种开发测试云系统 | |
CN107609150A (zh) | 一种基于页面元素选取的交互式网络爬虫创建方法及系统 | |
CN107885777A (zh) | 一种基于协作式爬虫的抓取网页数据的控制方法及系统 | |
CN106506389A (zh) | 网络请求异步处理方法及装置 | |
CN102646129A (zh) | 一种主题相关的分布式网络爬虫系统 | |
CN108959539B (zh) | 一种基于规则可配置的网页数据解析方法 | |
CN109063144A (zh) | 可视化网络爬虫方法及装置 | |
CN109614539A (zh) | 数据抓取方法、装置及计算机可读存储介质 | |
CN104915193B (zh) | 一种流程引擎的处理方法和装置 | |
CN104317857B (zh) | 一种房屋信息采集服务系统 | |
CN109710830A (zh) | 一种基于浏览器插件的分布式网络爬虫方法及系统 | |
CN108011931A (zh) | Web数据采集方法和Web数据采集系统 | |
CN109600385A (zh) | 一种访问控制方法及装置 | |
CN103399933B (zh) | 一种抓取网络平面媒体的网页内容的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190503 |