CN105824965A - 基于动态爬虫技术的数据源发现方法 - Google Patents
基于动态爬虫技术的数据源发现方法 Download PDFInfo
- Publication number
- CN105824965A CN105824965A CN201610203264.6A CN201610203264A CN105824965A CN 105824965 A CN105824965 A CN 105824965A CN 201610203264 A CN201610203264 A CN 201610203264A CN 105824965 A CN105824965 A CN 105824965A
- Authority
- CN
- China
- Prior art keywords
- webpage
- state
- data source
- cluster
- method based
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及了一种基于爬虫技术的深层次数据源发现方法,通过爬虫模块进行爬取,通过搜集网页中的符合条件的DOM元素,然后模拟浏览器事件,触发这些DOM元素,观察网页的内容是否发生了改变,若内容发生改变则改变后的网页内容形成一个新的状态,并以此新状态为起点继续爬取,否则继续触发当前状态的下一个可操作DOM元素,若无可操作元素则回溯到以前的状态。爬取策略采用深度优先的爬取策略。网页聚类模块将爬取过程中DOM树结构比较相似的网页聚为一类。若该聚类中结构相似的网页的数量满足设定的阈值,则认为其对应着网络中的某个数据源。本发明在网络资源的发现上有优异的表现,明显高于传统爬虫,并且克服了传统爬虫的不能感知深层次数据源的缺陷。
Description
技术领域
本发明主要知识点涉及网络爬虫技术,提出了一种与传统爬虫不同的爬取技术,用于发现隐藏在网络中的那些深层次数据源。
背景技术:
万维网之始,也就是我们所说的WEB1.0时期,在这个时期,网页内容的改变都是由统一资源定位(URL)的改变引起的。但是随着WEB2.0的发展,用户已经可以通过与浏览器的交互来改变一个网页的内容而不引起浏览器中URL的改变。换句话说,一个URL可以对应着一个网页的多个状态。
传统的搜索引擎(例如谷歌和百度)的工作原理都是通过URL之间的跳转来爬取网页中的内容。在WEB1.0时期,这种爬取模式理论上来说,可以爬取到互联网中所有网页的内容。但是在WEB2.0时期,他们爬取到的内容实际上只占有整个互联网中很少的一部分。举个例子来说,比如在图1中,用户可以通过点击网页中的“上一页”,1,2,3,4.....,“下一页”按钮来改变网页中的内容,而并不会引起URL的改变。传统的搜索引擎并不会感知到网页的内容发生了改变。所以,它们也就只能得到该URL对应的初始网页内容,而忽略了网页通过用户的操作发生改变后的内容。
网页内容改变后,网页中显示的数据也就发生了改变,像这种不能被传统搜索引擎感知到的数据,我们称之为DEEPWEB数据。这些数据,一般都对应着网络中的某一个数据库。而且,DEEPWEB中的数据不但数量巨大而且结构化程度高,专业化程度好,在专业领域内具有很大的使用价值。传统的搜索引擎只能发现网络中的静态资源,而并不具备发现这种深层次数据源的能力。
因此,如何发现这些隐藏在网络中高质量的数据已经成为信息抽取领域内一个亟待解决的问题。
发明内容
本发明针对传统搜索引擎只能发现网络中的静态数据的缺陷,提出一种基于动态爬虫技术的数据源发现方法,用于发现网络中这种隐藏在网络中深层次的数据源。
为了实现上述目的,本发明的技术方案如下:所述基于动态爬虫技术的深层次数据源发现方法,依据动态爬虫技术,通过触发网页中DOM元素上浏览器事件爬取网页中所隐藏的所有内容,再通过对DOM树结构相似网页的聚类,进而发现深层次数据源。
本发明利用爬虫模块进行爬取,通过搜集网页中的符合约束条件的DOM元素,然后模拟浏览器事件,触发这些DOM元素,观察网页的内容是否发生了改变,若内容发生改变则改变后的网页内容形成一个新的状态,并以此新状态为起点继续爬取,否则继续触发当前状态的下一个可操作DOM元素,若当前状态中无可操作DOM元素则回溯到上一个状态;利用网页聚类模块将爬虫模块爬取过程中所得到所有网页中DOM树结构相似的网页聚为一类,若该聚类中结构相似的网页的数量满足设定的阈值,则认为该聚类对应着网络中的深层次数据源。
在爬虫模块爬取的过程中,爬虫模块会通过模拟用户的行为与网页交互,得到网页的多种状态。
在爬取阶段,加载初始化网页后,作为一个新的状态,模拟浏览器中的事件,触发初始状态中的DOM元素。整个爬取采用的是深度优先爬取策略。
爬取的过程中,为了避免状态的重复,将状态的一个属性进行HASH值处理,若HASH值相等,则比较它们剩下的属性,以确定它们不发生重复;为了避免重复触发相同的DOM元素,对DOM元素也做同样处理。
在产生一个新的状态时进入网页聚类模块,判断新状态是否与上一个状态在是否属于同一个聚类;判断的依据是:两个状态所对应的URL是相同或者相近的则认为两个状态属于同一个聚类。
在回溯的时候,将回溯到的状态作为当前状态,将回溯之前的状态当做上一个状态,判断上一个状态所在的聚类是否已封闭;若当前状态与上一个状态属于同一个聚类,则上一个状态所在的聚类没有闭合,否则,则上一个状态所在的聚类已经闭合,此时根据聚类中状态的数目来判断该聚类是否对应着网络中的某一个数据源。
本发明的优点是:本发明提出的基于动态爬虫技术的数据源发现方法与原有爬虫技术相比,原有爬虫技术只能发现网络中的静态资源,而本发明能够发现网络中那些来源于数据库的动态资源,为下一步数据抽取提供了可能;解决了传统爬虫不能发现网络中深层次数据源的问题。
附图说明
图1为DEEPWEB动态数据源示意图。
图2为本发明爬取的流程图。
图3为状态跳转图。
图4为产生新状态聚类。
图5为回溯过程中的聚类情况1。
图6为回溯过程中的聚类情况2。
具体实施方式
本发明的技术方案要调用两个模块:爬虫模块、网页聚类模块。爬虫模块负责从网络中爬取动态网页;网页聚类模块负责将爬取到的网页中DOM树结构比较相似的网页聚类在一起,形成一个簇。
具体来说,爬虫模块主要负责从网络中爬取网页下载到本地,爬取的过程中,通过搜集网页中的符合约束条件的DOM元素,然后模拟浏览器事件,触发搜索到的DOM元素,如果网页的内容是否发生了改变,则将此时的网页内容作为一个新的状态,并以此新状态为起点继续爬取,否则继续触发当前状态的下一个可操作DOM元素。整个爬取策略采用深度优先的爬取策略,当满足提前设定的停止条件时(运行时间,爬取状态个数等)则整个爬取结束。整个爬取结果形成一个有向图,图中的节点是爬取过程中的每个状态,节点与节点之间通过事件相连。
一个URL对应着一个初始的网页,用户通过和浏览器交互,在不改变URL的情况下可能得到该网页的多种状态。所以,在爬虫模块爬取的过程中,爬虫会通过模拟用户的行为与网页交互,得到网页的多种状态。
所述网页聚类模块伴随着整个爬取过程,网页聚类模块主要的的目的是将爬虫所得到所有网页中DOM树结构比较相近的网页聚为一类,进而判断该DOM结构相近的网页集是否对应着网络中的深层次数据源。每当产生一个新状态或者爬取回溯到已经出现的状态的时候都要进入聚类模块。产生新状态进入聚类模块是为了判断当前状态和上一个状态是否属于同一个聚类,回溯到已有状态的时候是为了判断某一个相似网页集是否已经闭合。若该相似网页集已闭合且集合中的个数满足提前设定的阈值则认为该结构相似的网页集对应着网络中的某个数据源。
下面结合附图和实施例对本发明作进一步说明。
1)爬虫模块
爬虫模块的目标是从互联网上爬取网页下载到本地,爬虫模块内置一个浏览器,当一个网页加载完毕后,形成一个新的状态,搜集该状态中符合约束条件的DOM元素,通过浏览器模拟用户的行为,触发该DOM元素上的事件(比如click);然后观察网页中的内容是否发生改变,若内容发生改变则以此网页内容形成一个新的状态,并以此新状态为起点继续爬取,否则继续触发当前状态的下一个可操作DOM元素,若无可操作元素则回溯到以前的状态。爬取策略采用深度优先的爬取策略,整个爬取流程如图2所示:
步骤1.根据初始URL加载Ajax页面,将产生的第一个页面作为一个新状态。
步骤2.判断爬取是否达到结束条件,常见结束条件有最大爬取时间,最大状态数。
步骤3.若满足结束条件,则爬取结束。
步骤4.则找出可触发DOM元素加入新状态待触发元素队列中。
步骤5.从状态的待触发事件队列中,是否存在待触发DOM元素。
步骤6.若该DOM元素存在,则触发该DOM元素的事件。
步骤7.若该DOM元素不存在,则回溯至上一个状态。
步骤8.网页内容是否发生改变。
步骤9.若没有改变,则转向步骤5。
步骤10.若发生改变,则判断是否产生了一个新状态。
步骤11.若产生新状态,则判断是否到达最大爬取深度。
步骤12.若未到达最大爬取深度,则转向步骤2。
步骤13.若没有产生新状态,则回溯至上一个状态。
步骤14.若到达最大爬取深度,则回溯至上一个状态。
步骤15.回溯至上一个状态后,转向步骤2。
说明:聚类模块伴随着整个爬取过程,在形成一个新的状态和回溯至以前的状态后均需要经过聚类模块,用于聚类结构相似的网页。
在爬取的过程中,由一种状态转换至另一种状态则状态之间由Edge相连。对Edge的定义如附图3所示:Source(当前状态),Target(触发成功后的状态),Event(触发的事件)。通过这种爬取模型,整个爬取会形成一个有向图。
爬取过程中,存在着以下几个技术难点:
(1).不重复爬取。
传统搜索引擎中,不重复爬取指的是爬取的网页不重复,一般是URL不重复即可。而本发明中的不重复爬则不能简单的根据URL的不同来判断,因为网页的内容的是通过模拟用户的操作驱动的,这种状况下,网页内容的改变并不一定会引起URL的改变(参考AsynchronousJavascriptAndXML)。基于此,对于一个网页的状态,描述如下:URL,网页大小(Size),DOM树节点个数。
对于状态不重复爬取,采取的策略是用一个HASH表对URL进行映射,如果以此获得的HASH值相等,再比较状态的URL,网页大小以及DOM树节点个数在数值上是否相等。爬取过程中,若出现状态重复的情况,则回溯到上一个爬取状态。
(2).不重复触发相同的DOM元素。
网页内容从一个状态转换至另一个状态,网页中可能存在不变的区域。对于不变的区域,这些DOM元素并没有发生改变,重复触发这些DOM元素并没有什么意义。为了对DOM元素加以区分。本发明,对一个DOM元素定义如下属性:Tag,Text,Attributes,Class。
为了不重复触发DOM元素,采取的策略是对Tag+Text组成的一个字符串进行映射,保存在HASH表中。若两个DOM元素的所获得的HASH值相等,再逐一比较元素的四个属性值是否相等。
(3).排除不相关的事件。
网页中的DOM元素每一种元素都有好几种事件类型,而有些事件触发可能会得到相同的结果,或者只会引起网页显示样式的变化,并不会引起内容的改变。所以一般来说,在爬取的过程中需要对可触发的DOM元素进行约束,这一点可以在步骤(8)中,自定义约束条件。
关于事件类型的约束,一般在爬取的过程中只关注主要的几种类型事件(click,doubleclick,mouseover)中的一种或几种。
2)聚类模块
聚类模块的主要作用是将结构相似的网页聚类在一起。在爬取过程中,产生新状态和回溯到上一个状态的时候都会进入聚类的模块。
(1)产生新状态进入聚类模块。
判断两个状态相似的原理:
(1.1)两个状态所对应的URL是相同的,
(1.2)两个状态所对应的URL的差异仅仅是查询条件的不同,
(1.3)两个状态所对应的URL的差异仅仅是数字的不同。
如图4所示,从状态s3跳转,产生新状态s4的过程中会进入聚类模块,进而判断s3和s4是否是相似的状态,如果两个状态是相似的,则将两者聚为一类。
(2)回溯到上一个状态进入聚类模块。
如图5,6所示,状态s5的符合条件的DOM元素触发完毕之后,会回溯到s3状态。若发现s3状态和s5不属于同一个聚类如图5,则判定该类已经聚合完毕,属于该聚簇的状态对应着网络中的某个数据源。若s3和s5属于同一聚类如图6,则认定该聚类并没有聚合完毕,在回溯到状态s2的会进一步观察该聚类。
Claims (8)
1.基于动态爬虫技术的深层次数据源发现方法,其特征是,依据动态爬虫技术,通过触发网页中DOM元素上浏览器事件爬取网页中所隐藏的所有内容,再通过对DOM树结构相似网页的聚类,进而发现深层次数据源。
2.根据权利要求1所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,利用爬虫模块进行爬取,通过搜集网页中的符合约束条件的DOM元素,然后模拟浏览器事件,触发这些DOM元素,观察网页的内容是否发生了改变,若内容发生改变则改变后的网页内容形成一个新的状态,并以此新状态为起点继续爬取,否则继续触发当前状态的下一个可操作DOM元素,若当前状态中无可操作DOM元素则回溯到上一个状态;利用网页聚类模块将爬虫模块爬取过程中所得到所有网页中DOM树结构相似的网页聚为一类,若该聚类中结构相似的网页的数量满足设定的阈值,则认为该聚类对应着网络中的深层次数据源。
3.根据权利要求2所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,在爬虫模块爬取的过程中,爬虫模块会通过模拟用户的行为与网页交互,得到网页的多种状态。
4.根据权利要求1所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,在爬取阶段,加载初始化网页后,作为一个新的状态,模拟浏览器中的事件,触发初始状态中的DOM元素。
5.根据权利要求1所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,整个爬取采用的是深度优先爬取策略。
6.根据权利要求1所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,爬取的过程中,为了避免状态的重复,将状态的一个属性进行HASH值处理,若HASH值相等,则比较它们剩下的属性,以确定它们不发生重复;为了避免重复触发相同的DOM元素,对DOM元素也做同样处理。
7.根据权利要求2所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,在产生一个新的状态时进入网页聚类模块,判断新状态是否与上一个状态在是否属于同一个聚类;判断的依据是:两个状态所对应的URL是相同或者相近的则认为两个状态属于同一个聚类。
8.根据权利要求2所述的基于动态爬虫技术的深层次数据源发现方法,其特征是,在回溯的时候,将回溯到的状态作为当前状态,将回溯之前的状态当做上一个状态,判断上一个状态所在的聚类是否已封闭;若当前状态与上一个状态属于同一个聚类,则上一个状态所在的聚类没有闭合,否则,则上一个状态所在的聚类已经闭合,此时根据聚类中状态的数目来判断该聚类是否对应着网络中的某一个数据源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610203264.6A CN105824965A (zh) | 2016-04-01 | 2016-04-01 | 基于动态爬虫技术的数据源发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610203264.6A CN105824965A (zh) | 2016-04-01 | 2016-04-01 | 基于动态爬虫技术的数据源发现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105824965A true CN105824965A (zh) | 2016-08-03 |
Family
ID=56525698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610203264.6A Pending CN105824965A (zh) | 2016-04-01 | 2016-04-01 | 基于动态爬虫技术的数据源发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824965A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798051A (zh) * | 2016-08-31 | 2018-03-13 | 安提特软件有限责任公司 | 文件对象模型事务爬行器 |
CN108038218A (zh) * | 2017-12-22 | 2018-05-15 | 联想(北京)有限公司 | 一种分布式爬虫方法、电子设备及服务器 |
CN109753596A (zh) * | 2018-12-29 | 2019-05-14 | 中国科学院计算技术研究所 | 用于大规模网络数据采集的信源管理与配置方法和*** |
CN109783728A (zh) * | 2018-12-29 | 2019-05-21 | 安徽听见科技有限公司 | 页面爬虫规则更新方法及*** |
CN110688555A (zh) * | 2019-09-04 | 2020-01-14 | 华东江苏大数据交易中心股份有限公司 | 一种基于爬虫的数据源发现和验证*** |
CN110968758A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页数据的爬取方法及装置 |
CN117763216A (zh) * | 2024-02-04 | 2024-03-26 | 广州敏行数字科技有限公司 | 基于人工智能的不规则数据提取方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110173178A1 (en) * | 2002-06-19 | 2011-07-14 | Craig Conboy | Method and system for obtaining script related information for website crawling |
CN103268361A (zh) * | 2013-06-07 | 2013-08-28 | 百度在线网络技术(北京)有限公司 | 网页中隐藏url的提取方法、装置和*** |
CN103577427A (zh) * | 2012-07-25 | 2014-02-12 | ***通信集团公司 | 基于浏览器内核的网页爬取方法、装置及包含该装置的浏览器 |
CN103984749A (zh) * | 2014-05-27 | 2014-08-13 | 电子科技大学 | 一种基于链接分析的聚焦爬虫方法 |
-
2016
- 2016-04-01 CN CN201610203264.6A patent/CN105824965A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110173178A1 (en) * | 2002-06-19 | 2011-07-14 | Craig Conboy | Method and system for obtaining script related information for website crawling |
CN103577427A (zh) * | 2012-07-25 | 2014-02-12 | ***通信集团公司 | 基于浏览器内核的网页爬取方法、装置及包含该装置的浏览器 |
CN103268361A (zh) * | 2013-06-07 | 2013-08-28 | 百度在线网络技术(北京)有限公司 | 网页中隐藏url的提取方法、装置和*** |
CN103984749A (zh) * | 2014-05-27 | 2014-08-13 | 电子科技大学 | 一种基于链接分析的聚焦爬虫方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798051A (zh) * | 2016-08-31 | 2018-03-13 | 安提特软件有限责任公司 | 文件对象模型事务爬行器 |
CN108038218A (zh) * | 2017-12-22 | 2018-05-15 | 联想(北京)有限公司 | 一种分布式爬虫方法、电子设备及服务器 |
CN108038218B (zh) * | 2017-12-22 | 2022-04-22 | 联想(北京)有限公司 | 一种分布式爬虫方法、电子设备及服务器 |
CN110968758A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页数据的爬取方法及装置 |
CN109753596A (zh) * | 2018-12-29 | 2019-05-14 | 中国科学院计算技术研究所 | 用于大规模网络数据采集的信源管理与配置方法和*** |
CN109783728A (zh) * | 2018-12-29 | 2019-05-21 | 安徽听见科技有限公司 | 页面爬虫规则更新方法及*** |
CN109783728B (zh) * | 2018-12-29 | 2021-10-19 | 安徽听见科技有限公司 | 页面爬虫规则更新方法及*** |
CN110688555A (zh) * | 2019-09-04 | 2020-01-14 | 华东江苏大数据交易中心股份有限公司 | 一种基于爬虫的数据源发现和验证*** |
CN117763216A (zh) * | 2024-02-04 | 2024-03-26 | 广州敏行数字科技有限公司 | 基于人工智能的不规则数据提取方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824965A (zh) | 基于动态爬虫技术的数据源发现方法 | |
US8650198B2 (en) | Systems and methods for facilitating the gathering of open source intelligence | |
US9348934B2 (en) | Systems and methods for facilitating open source intelligence gathering | |
US9767182B1 (en) | Classification of search queries | |
CN105677654B (zh) | 广告过滤方法及装置 | |
JP2019533205A (ja) | ユーザキーワード抽出装置、方法、及びコンピュータ読み取り可能な記憶媒体 | |
CN106980651B (zh) | 一种基于知识图谱的爬取种子列表更新方法及装置 | |
CN103678492A (zh) | 基于网络爬虫行为识别与缓冲更新策略的Web点击计数方法 | |
CN110134845A (zh) | 项目舆情监控方法、装置、计算机设备及存储介质 | |
CN109815381A (zh) | 用户画像构建方法、***、计算机设备及存储介质 | |
US20140129490A1 (en) | Image url-based junk detection | |
CN113569118B (zh) | 自媒体推送方法、装置、计算机设备及存储介质 | |
CN102654875B (zh) | 一种自动处理网页文本的内链的方法及装置 | |
US20120284224A1 (en) | Build of website knowledge tables | |
CN103324720A (zh) | 根据用户状态进行个性化推荐的方法和*** | |
CN108255895A (zh) | 一种使用上下文环境规则的网页数据获取方法 | |
CN104361121B (zh) | 一种web报表***公式的批量解析方法 | |
US9195940B2 (en) | Jabba-type override for correcting or improving output of a model | |
Abebe et al. | Overview of event-based collective knowledge management in multimedia digital ecosystems | |
Lapid et al. | Co-membership-based generic anomalous communities detection | |
CN103377207A (zh) | 基于脚本引擎的微博用户关系采集方法 | |
Zheng et al. | URL Rule based focused crawler | |
Taherdoost et al. | Information Mining on the Web: E-business Application | |
CN104331472A (zh) | 分词训练数据的构造方法和装置 | |
CN103995849B (zh) | 一种事件跟踪方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160803 |
|
RJ01 | Rejection of invention patent application after publication |