CN106649567A - 一种基于浏览器内核的网络爬虫系统 - Google Patents

一种基于浏览器内核的网络爬虫系统 Download PDF

Info

Publication number
CN106649567A
CN106649567A CN201611005039.8A CN201611005039A CN106649567A CN 106649567 A CN106649567 A CN 106649567A CN 201611005039 A CN201611005039 A CN 201611005039A CN 106649567 A CN106649567 A CN 106649567A
Authority
CN
China
Prior art keywords
page
browser
module
network
crawler system
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
Application number
CN201611005039.8A
Other languages
English (en)
Inventor
范渊
陈刚
黄进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN201611005039.8A priority Critical patent/CN106649567A/zh
Publication of CN106649567A publication Critical patent/CN106649567A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及网页搜索引擎技术,旨在提供一种基于浏览器内核的网络爬虫系统。该种基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块,用于进行页面分析并发现其他页面的URL。本发明使用动态分析技术,通过内置的浏览器内核,去动态的加载页面依赖的资源,并执行Javascript脚本,对DOM节点进行动态的操作如模拟鼠标点击、双击、回车等事件,以发现新的页面,弥补了传统爬虫的不足。

Description

一种基于浏览器内核的网络爬虫系统
技术领域
本发明是关于网页搜索引擎技术领域,特别涉及一种基于浏览器内核的网络爬虫系统。
背景技术
网络爬虫有着广泛的应用场景,它是网页搜索引擎的重要组成部分,也被用来获取网络中的特定信息。网络爬虫最核心的功能就是从一个页面中发现其他页面的URL。
目前常见的网络爬虫,都是基于对页面的静态分析的——在分析页面时,不会去动态的执行页面中的Javascript脚本,也不会加载页面中的图片、脚本等资源。静态分析页面时,主要提取页面中的<a>标签、<form>标签等可能含有指向其他页面URL的内容。
随着互联网技术飞速发展,网页的实现方式也越来越多样化,各种前端技术手段层出不穷,传统的对页面进行静态分析的方法要想分析这些页面,就变得越来越难,比如:
1.页面中的按钮在被点击时,向服务器的另一个页面发送一个Ajax请求;
2.页面中的<a>标签是在页面中的Javascript脚本执行时动态生成的。
在例子1中,Ajax请求被发到哪里只有执行过Javascript脚本才知道。Ajax请求的目的URL可能指向一个新的页面。如果用静态分析的方法来分析页面,就可能漏掉这个页面了。在例子2中,<a>标签是在浏览器中执行Javascript脚本才会产生并显示给用户的,如果只是静态分析,根本无法在页面的源码中找到该标签。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种能够抓取Ajax请求中的URL以及动态构建的DOM节点中含有的URL的系统。为解决上述技术问题,本发明的解决方案是:
提供一种基于浏览器内核的网络爬虫系统,用于进行页面分析并发现其他页面的URL,所述基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块;
所述浏览器引擎模块用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本;浏览器引擎模块在加载完一个页面之后,能形成一个DOM树,DOM树中的需要通过事件触发JS操作的DOM节点会绑定事件(如点击、双击、键盘按键等事件);
所述网络通信模块是浏览器引擎模块与网络服务器进行交互的模块,用于发送和接收网络数据包,从而获取URL;网络通信模块能处理http请求、ftp通信,并抓取浏览器引擎模块发送的网络数据包,用于通过抓取的网络数据包来获取和本页面有关的所有其他URL;
所述策略模块能在浏览器引擎模块一个页面加载完成后,触发页面中的DOM节点绑定的事件,用于执行页面中只有通过触发才能执行到的Javascript代码。
在本发明中,所述浏览器引擎模块能采用webkit、blink、Trident或者Gecko实现。
在本发明中,所述网络通信模块能利用浏览器引擎模块中原有的网络通信接口实现(浏览器内核中包含有发送接收网络数据包的接口,可以通过直接修改该接口将需要的URL数据以一定格式输出方便获取),或者使用HOOK技术实现。
在本发明中,所述策略模块是使用Javascript编写的脚本文件,用于触发DOM事件。
提供所述基于浏览器内核的网络爬虫系统的使用方法,使用基于浏览器内核的网络爬虫系统处理一个页面,具体步骤为:
1)输入一个初始URL地址给浏览器引擎;
2)浏览器引擎会加载该URL地址的网页,并加载该网页内的所有资源,在加载过程中,会发送一些HTTP请求,这些HTTP请求都会被网络通信部分获得并保存起来;
3)加载完毕之后,逐个触发DOM树中节点所有绑定的事件,有些事件在触发时,会在DOM中增加新的节点,这部分节点中绑定了事件的,也要逐个触发事件并注意处理不停产生新节点而导致程序无法结束的问题;在该过程中,浏览器引擎又会发送一些HTTP请求,这些HTTP请求同样都会被网络通信部分获得并保存起来;
4)把步骤2)和步骤3)的HTTP请求汇总,根据需求提取所有或部分HTTP请求的URL部分、Method部分、Body部分等,作为输出的结果。
与现有技术相比,本发明的有益效果是:
本发明使用动态分析技术,通过内置的浏览器内核,去动态的加载页面依赖的资源,并执行Javascript脚本,对DOM节点进行动态的操作如模拟鼠标点击、双击、回车等事件,以发现新的页面,弥补了传统爬虫的不足。
附图说明
图1为本发明的工作示意图。
具体实施方式
首先需要说明的是,本发明涉及网页搜索引擎技术,是计算机技术在互联网技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于:浏览器引擎模块、网络通信模块、策略模块等,凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
下面结合附图与具体实施方式对本发明作进一步详细描述:
如图1所示的一种基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块,用于进行页面分析并发现其他页面的URL。
所述浏览器引擎用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本,浏览器引擎能够发送网络数据包。浏览器引擎可以是webkit、blink、Trident、Gecko等,也可以是自己实现的一个浏览器引擎。
在程序中集成一个浏览器引擎之后,可以自己实现网络通信模块来处理http请求、ftp通信等,这样就可以在这部分代码中抓取浏览器引擎的所有网络数据包。如果不自己实现网络通信模块,也可以通过在原有的网络通信模块插入代码,或者直接调用浏览器引擎的接口来实现抓取网络数据包的功能。
浏览器引擎在加载一个页面完毕之后,会形成一个DOM树,DOM树中的某些节点会绑定事件(如点击、双击、键盘按键等事件)。为了让页面中的所有的Javascript代码都执行到,需要逐个触发DOM树中节点绑定的事件。如果一个事件的处理函数中有发起Ajax请求的行为,则数据包会被网络通信模块抓取到。
使用该基于浏览器内核的网络爬虫系统处理一个页面,其具体流程为:
1、输入一个初始URL地址给浏览器引擎。
2、浏览器引擎会加载该URL地址的网页,并加载该网页内的所有资源(如Javascript,CSS,图片等),在加载过程中,会发送一些HTTP请求,这些HTTP请求都会被网络通信部分获得并保存起来。
3、加载完毕之后,逐个触发DOM树中节点所有绑定的事件,有些事件在触发时,会在DOM中增加新的节点,这部分节点中绑定了事件的,也要逐个触发事件并注意处理不停产生新节点而导致程序无法结束的问题;在该过程中,浏览器引擎又会发送一些HTTP请求,这些HTTP请求同样都会被网络通信部分获得并保存起来。
4、爬虫程序把步骤2和步骤3的HTTP请求汇总,根据需求提取所有或部分HTTP请求的URL部分、Method部分、Body部分等,作为程序输出的结果。
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (5)

1.一种基于浏览器内核的网络爬虫系统,用于进行页面分析并发现其他页面的URL,其特征在于,所述基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块;
所述浏览器引擎模块用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本;浏览器引擎模块在加载完一个页面之后,能形成一个DOM树,DOM树中的需要通过事件触发JS操作的DOM节点会绑定事件;
所述网络通信模块是浏览器引擎模块与网络服务器进行交互的模块,用于发送和接收网络数据包,从而获取URL;网络通信模块能处理http请求、ftp通信,并抓取浏览器引擎模块发送的网络数据包,用于通过抓取的网络数据包来获取和本页面有关的所有其他URL;
所述策略模块能在浏览器引擎模块一个页面加载完成后,触发页面中的DOM节点绑定的事件,用于执行页面中只有通过触发才能执行到的Javascript代码。
2.根据权利要求1所述的一种基于浏览器内核的网络爬虫系统,其特征在于,所述浏览器引擎模块能采用webkit、blink、Trident或者Gecko实现。
3.根据权利要求1所述的一种基于浏览器内核的网络爬虫系统,其特征在于,所述网络通信模块能利用浏览器引擎模块中原有的网络通信接口实现,或者使用HOOK技术实现。
4.根据权利要求1所述的一种基于浏览器内核的网络爬虫系统,其特征在于,所述策略模块是使用Javascript编写的脚本文件,用于触发DOM事件。
5.权利要求1所述基于浏览器内核的网络爬虫系统的使用方法,其特征在于,使用基于浏览器内核的网络爬虫系统处理一个页面,具体步骤为:
1)输入一个初始URL地址给浏览器引擎;
2)浏览器引擎会加载该URL地址的网页,并加载该网页内的所有资源,在加载过程中,会发送一些HTTP请求,这些HTTP请求都会被网络通信部分获得并保存起来;
3)加载完毕之后,逐个触发DOM树中节点所有绑定的事件,有些事件在触发时,会在DOM中增加新的节点,这部分节点中绑定了事件的,也要逐个触发事件并注意处理不停产生新节点而导致程序无法结束的问题;在该过程中,浏览器引擎又会发送一些HTTP请求,这些HTTP请求同样都会被网络通信部分获得并保存起来;
4)把步骤2)和步骤3)的HTTP请求汇总,根据需求提取所有或部分HTTP请求的URL部分、Method部分、Body部分等,作为输出的结果。
CN201611005039.8A 2016-11-15 2016-11-15 一种基于浏览器内核的网络爬虫系统 Pending CN106649567A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611005039.8A CN106649567A (zh) 2016-11-15 2016-11-15 一种基于浏览器内核的网络爬虫系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611005039.8A CN106649567A (zh) 2016-11-15 2016-11-15 一种基于浏览器内核的网络爬虫系统

Publications (1)

Publication Number Publication Date
CN106649567A true CN106649567A (zh) 2017-05-10

Family

ID=58805741

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611005039.8A Pending CN106649567A (zh) 2016-11-15 2016-11-15 一种基于浏览器内核的网络爬虫系统

Country Status (1)

Country Link
CN (1) CN106649567A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729385A (zh) * 2017-09-19 2018-02-23 杭州安恒信息技术有限公司 一种采集动态网页完整数据内容的方法
CN108304498A (zh) * 2018-01-12 2018-07-20 深圳壹账通智能科技有限公司 网页数据采集方法、装置、计算机设备和存储介质
CN109670100A (zh) * 2018-12-21 2019-04-23 第四范式(北京)技术有限公司 一种页面数据抓取方法及装置
CN110083755A (zh) * 2019-04-29 2019-08-02 北京脉冲星科技有限公司 一种高仿真解析网页方法、装置和电子设备
CN110489698A (zh) * 2019-08-16 2019-11-22 南京云帐房网络科技有限公司 一种自动化采集网页数据的系统及方法
WO2020253366A1 (zh) * 2019-06-17 2020-12-24 深圳壹账通智能科技有限公司 网页邮箱数据的爬取方法、装置、终端和存储介质
CN112632358A (zh) * 2020-12-29 2021-04-09 北京天融信网络安全技术有限公司 一种资源链接获取方法、装置、电子设备及存储介质
EP3848824A1 (en) * 2020-01-07 2021-07-14 Baidu Online Network Technology (Beijing) Co., Ltd. Landing page processing method, apparatus, device and medium
CN113609411A (zh) * 2021-06-25 2021-11-05 北京华云安信息技术有限公司 通过网络爬虫爬取页面信息的方法
CN113609412A (zh) * 2021-06-28 2021-11-05 北京华云安信息技术有限公司 通过Hook关键函数和事件获取URL的方法
WO2024045954A1 (zh) * 2022-08-31 2024-03-07 华为云计算技术有限公司 一种获取次级页面的方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214098A (zh) * 2011-06-15 2011-10-12 中山大学 一种基于WebKit浏览器引擎的动态页面数据采集方法
CN103268361A (zh) * 2013-06-07 2013-08-28 百度在线网络技术(北京)有限公司 网页中隐藏url的提取方法、装置和系统
CN103577427A (zh) * 2012-07-25 2014-02-12 中国移动通信集团公司 基于浏览器内核的网页爬取方法、装置及包含该装置的浏览器
CN103853717A (zh) * 2012-11-28 2014-06-11 纽海信息技术(上海)有限公司 网络爬虫

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214098A (zh) * 2011-06-15 2011-10-12 中山大学 一种基于WebKit浏览器引擎的动态页面数据采集方法
CN103577427A (zh) * 2012-07-25 2014-02-12 中国移动通信集团公司 基于浏览器内核的网页爬取方法、装置及包含该装置的浏览器
CN103853717A (zh) * 2012-11-28 2014-06-11 纽海信息技术(上海)有限公司 网络爬虫
CN103268361A (zh) * 2013-06-07 2013-08-28 百度在线网络技术(北京)有限公司 网页中隐藏url的提取方法、装置和系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729385A (zh) * 2017-09-19 2018-02-23 杭州安恒信息技术有限公司 一种采集动态网页完整数据内容的方法
CN108304498B (zh) * 2018-01-12 2020-08-25 深圳壹账通智能科技有限公司 网页数据采集方法、装置、计算机设备和存储介质
CN108304498A (zh) * 2018-01-12 2018-07-20 深圳壹账通智能科技有限公司 网页数据采集方法、装置、计算机设备和存储介质
CN109670100A (zh) * 2018-12-21 2019-04-23 第四范式(北京)技术有限公司 一种页面数据抓取方法及装置
CN110083755A (zh) * 2019-04-29 2019-08-02 北京脉冲星科技有限公司 一种高仿真解析网页方法、装置和电子设备
WO2020253366A1 (zh) * 2019-06-17 2020-12-24 深圳壹账通智能科技有限公司 网页邮箱数据的爬取方法、装置、终端和存储介质
CN110489698A (zh) * 2019-08-16 2019-11-22 南京云帐房网络科技有限公司 一种自动化采集网页数据的系统及方法
CN110489698B (zh) * 2019-08-16 2023-03-21 云帐房网络科技有限公司 一种自动化采集网页数据的系统及方法
EP3848824A1 (en) * 2020-01-07 2021-07-14 Baidu Online Network Technology (Beijing) Co., Ltd. Landing page processing method, apparatus, device and medium
KR20210089081A (ko) * 2020-01-07 2021-07-15 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 랜딩 페이지 처리 방법, 장치, 기기 및 매체
KR102550540B1 (ko) * 2020-01-07 2023-06-30 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 랜딩 페이지 처리 방법, 장치, 기기 및 매체
CN112632358A (zh) * 2020-12-29 2021-04-09 北京天融信网络安全技术有限公司 一种资源链接获取方法、装置、电子设备及存储介质
CN113609411A (zh) * 2021-06-25 2021-11-05 北京华云安信息技术有限公司 通过网络爬虫爬取页面信息的方法
CN113609412A (zh) * 2021-06-28 2021-11-05 北京华云安信息技术有限公司 通过Hook关键函数和事件获取URL的方法
WO2024045954A1 (zh) * 2022-08-31 2024-03-07 华为云计算技术有限公司 一种获取次级页面的方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
CN106649567A (zh) 一种基于浏览器内核的网络爬虫系统
WO2016173200A1 (zh) 用于检测恶意网址的方法和系统
CN102346770B (zh) WebKit浏览器网页内容加载方法及装置
CN101984429B (zh) 获取目标页面的方法、装置、搜索引擎和浏览器
CN104408204A (zh) 网页页面链接地址的获取方法和装置
CN103455600B (zh) 一种视频url抓取方法、装置及服务器设备
CN111177519B (zh) 网页内容获取方法、装置、存储介质及设备
US20140337699A1 (en) Method and apparatus for extracting web page content
CN113159807B (zh) 落地页处理方法、装置、设备和介质
CN101770488A (zh) 网页转换系统及方法
CN106874271A (zh) 一种将pc网页转换为移动终端网页的方法及系统
CN110598135A (zh) 网络请求处理方法、装置、计算机可读介质及电子设备
US20100023644A1 (en) Inspecting web browser state information from a synchronously-invoked service
CN102915371B (zh) 在网页中动态引用文件的方法
CN103458065A (zh) 一种HTML5标准下基于Webkit内核的视频地址提取方法
CN103488675A (zh) 一种多网页新闻评论内容自动精确提取装置
CN101763432A (zh) 一种轻量级网页动态视图快速构建方法
CN103488508B (zh) 一种浏览器的工作方法、浏览器及终端设备
CN104008213A (zh) 一种网页信息更新发现与统计的方法和装置
Vogel et al. An in-depth analysis of web page structure and efficiency with focus on optimization potential for initial page load
JP2016018233A (ja) スクリプトのキャッシュ方法及びそれを適用した情報処理装置
WO2010087071A1 (ja) ウェブサーバシステム及びプログラム
CN102726026A (zh) 一种用户行为的获取方法、设备及系统
CN104239452A (zh) 资源获取方法及装置
Maxwell et al. Developing ContemporaryWeb-Based Interaction Logging Infrastructure: The Design and Challenges of LogUI.

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: 20170510