CN107729385A - 一种采集动态网页完整数据内容的方法 - Google Patents
一种采集动态网页完整数据内容的方法 Download PDFInfo
- Publication number
- CN107729385A CN107729385A CN201710846183.2A CN201710846183A CN107729385A CN 107729385 A CN107729385 A CN 107729385A CN 201710846183 A CN201710846183 A CN 201710846183A CN 107729385 A CN107729385 A CN 107729385A
- Authority
- CN
- China
- Prior art keywords
- element node
- dom element
- page
- web page
- dom
- 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/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- 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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
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 Transfer Between Computers (AREA)
Abstract
本发明涉及网络网页信息收集领域,旨在提供一种采集动态网页完整数据内容的方法。该种采集动态网页完整数据内容的方法包括步骤:通过模拟浏览器打开需要采集的动态网页,获得一个真实环境下的页面状态;遍历页面的DOM树结构,对拥有或添加了点击事件以及鼠标悬停事件的标签所对应的DOM元素节点打上已入队标记,同时标记超链接标签、按钮标签对应的DOM元素节点,将打上标记的DOM元素节点存入处理队列;循环遍历处理队列中的标签,当处理队列为空后,即维护得到了该动态页面的完整页面数据。本发明采取模拟用户行为,通过触发网页的各种事件并监听修改原有事件处理函数的方法,充分获取并完善了网页的整体内容。
Description
技术领域
本发明是关于网络网页信息收集领域,特别涉及一种采集动态网页完整数据内容的方法。
背景技术
随着互联网技术的快速发展,互联网已经成为大量信息的载体。通过数据的采集分析,可以提取出大量有价值的信息,而数据量的多少直接决定了是否能够获取信息以及获取的信息的准确性。在网页仍旧是静态页面为主的时期,采集网页数据只需要获取服务器的响应内容即可,如何通过一个或一些页面寻找到相关联的更多的页面便是网页信息采集的关键。传统的网络爬虫便是这样的一种数据采集工具。
网络爬虫是一种以固定规则自动抓取网页信息的程序或脚本。网络爬虫通常以一个或多个URL(Uniform Resource Locator,统一资源定位符)开始,请求、获取、分析URL对应的初始网页的内容并提取出其中的URL,然后对这些新获取的URL重复之前的处理。在爬行网页的过程中,爬虫会不断地获取当前页面的URL并将这些URL加入队列。爬虫定期检查该队列,如果该队列不为空,则爬行队列中的URL。爬虫会在满足一定的停止条件后自动停止。对于一个静态网页,爬虫通常只需要通过一次HTTP(HyperTextTransfer Protocol,超文本传输协议)请求就能获取到网页的完整数据,然后对这些内容进行一次分析便可(比如通过正则匹配提取URL)。
然而随着web2.0的出现,这种对URL请求结果进行分析的方法对于信息获取的可能性以及完整性都有所下降。这主要是因为web2.0的动态网页技术使得对网页URL的一次请求并不能获取到完整的网页内容,有时候甚至没有一点有用的信息。通常一个动态页面对应HTTP请求的页面数据极少,往往需要执行页面中的JavaScript脚本动态生成一些页面的内容,有时候甚至需要用户的某些操作页面才会添加上一些数据。这在使用AJAX(Asynchronous JavaScript And XML,异步JavaScript和XML)技术的网页中尤为突出,很多信息需要后续的一次或多次异步请求才能获取到。
在URL静态提取的技术已经趋于完善的现在,网页数据的采集方法关键点从如何获取更多的URL转移到了如何获取一个页面的完整数据内容。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种可以完整采集动态页面数据内容的方法。为解决上述技术问题,本发明的解决方案是:
提供一种采集动态网页完整数据内容的方法,具体包括下述步骤:
步骤(1):通过模拟浏览器打开需要采集的动态网页,并执行网页中的JavaScript脚本,获得一个真实环境下的页面状态;
步骤(2):遍历步骤(1)获得的页面的DOM(Document Object Model,文档对象模型)树结构,对拥有或添加了点击事件以及鼠标悬停事件的标签所对应的DOM元素节点打上已入队标记,同时标记超链接标签、按钮标签对应的DOM元素节点;将打上标记的DOM元素节点存入处理队列;
步骤(3):循环遍历处理队列中的标签,逐个触发点击事件或悬停事件;并对产生的HTTP请求,以及DOM元素节点的添加、删除、修改行为进行监控,同时禁止网页的页面跳转(navigation)行为;
步骤(4):根据步骤(3)中行为的不同,进行不同的处理,具体如下:
a)如果产生的行为是HTTP请求,则发出请求,并在获取响应时回调网页脚本的响应处理过程;
b)如果产生的行为是DOM元素节点的添加,则执行该行为,添加该DOM元素节点到网页DOM树结构中对应的DOM元素节点下,并对添加的DOM元素节点进行遍历分析,对于具有步骤(2)中所述特征(即拥有或添加了点击事件以及鼠标悬停事件)的网页标签所对应的DOM元素节点打上已入队标记,并加入处理队列;
c)如果产生的行为是DOM元素节点的删除,则不删除原DOM元素节点,仅修改该DOM元素节点的id与名称,对该修改后的DOM元素节点打上删除标记;
d)如果产生的行为是DOM元素节点的修改,则拷贝原DOM元素节点,修改原DOM元素节点的id、名称,对该修改后的原DOM元素节点打上修改标记,然后将监控到的修改应用到该拷贝后的新DOM元素节点上;最后对应用了修改的拷贝后的DOM元素节点进行分析,若为具有步骤(2)中所述特征(即拥有或添加了点击事件以及鼠标悬停事件)的网页标签所对应的DOM元素节点,则打上标记并加入处理队列;
步骤(5):当处理队列为空后,即维护得到了该动态页面的完整页面数据。
在本发明中,所述步骤(1)中,对于图片、视频资源能根据需要不进行加载,从而提高采集的速度。
本发明的工作原理:通过模拟浏览器环境,完整加载一个动态生成后的页面,然后模拟用户的使用行为,比如点击某个页面按钮、鼠标移动到某个图标等等,触发动态网页脚本的执行、异步请求等过程,最后对脚本执行过程中会修改页面数据信息结构的操作进行重写与记录,并通过广度优先搜索的方式维护一个完整的页面结构,从而获取完整的网页信息。
与现有技术相比,本发明的有益效果是:
对于仅仅请求一次然后处理HTTP响应的方法,本方法优点在于采取完整网页加载的方法,获取了更加完整的页面数据。更进一步的,本发明采取模拟用户行为,通过触发网页的各种事件并监听修改原有事件处理函数的方法,充分获取并完善了网页的整体内容。
另一方面,现有的对动态页面采集的技术也存在缺陷。它们大多只是通过触发一些设定好的用户行为来获取新产生的页面数据,比如点击一些特定的按钮,提交一些form表单来获取链接等信息,而没有对这个页面的DOM结构进行维护与更新,更不会通过广度优先搜索方式来不断处理扩充页面的DOM结构,虽然比起静态获取要好很多,但获取的数据仍然不够完整。一些方法也主要是针对如何获取动态页面中的动态链接设计,并不具有通用性。而本方法不局限于采集链接、不局限某种类型的网站,是针对动态网页的完整数据内容的获取、采集方法。
附图说明
图1为本发明进行动态网页内容采集的流程图。
具体实施方式
首先需要说明的是,本发明是计算机技术在网络网页信息收集领域的一种应用。在本发明的实现过程中,会涉及到多个算法的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
下面结合附图与具体实施方式对本发明作进一步详细描述:
如图1所示的一种采集动态网页完整数据内容的方法,通过模拟浏览器,并模拟用户点击、悬停等行为,触发动态网页的动态过程,通过监听、修改原生的HTTP请求、DOM节点添加、删除、修改行为处理函数,达到尽可能多的获取动态网页的信息,最终获取一个比初始页面更加完整,与网页总的信息量更接近的网页结构内容。
其步骤具体为:
1.1)设定需要采集内容的URL,在模拟浏览器中请求获取其初始内容;
1.2)加载页面的JavaScript;
1.3)遍历页面的DOM节点,将存在点击等事件的标签加入处理队列;
1.4)判断处理队列是否为空,若不为空则执行1.5),为空则执行1.6);
1.5)取出队首元素节点并触发其事件;
1.6)对最终的页面内容进行静态分析,获取需要的信息,流程结束。
以下为另一线程中并发执行的过程。
2.1)监听事件的发生并根据事件不同进行不同的处理,HTTP请求执行2.2),DOM节点添加执行2.3),DOM节点修改执行2.4),DOM节点删除执行2.5);
2.2)发出HTTP请求,并在请求结束时根据网页脚本对返回的信息进行处理。
2.3)添加新的节点,执行1.3)对节点内容进行处理。
2.4)拷贝原节点,修改原节点id、name。对拷贝的节点应用修改,若该节点为存在点击等事件的标签对应的dom元素节点,则加入处理队列。
2.5)修改原节点的id、name。
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (2)
1.一种采集动态网页完整数据内容的方法,其特征在于,具体包括下述步骤:
步骤(1):通过模拟浏览器打开需要采集的动态网页,并执行网页中的JavaScript脚本,获得一个真实环境下的页面状态;
步骤(2):遍历步骤(1)获得的页面的DOM树结构,对拥有或添加了点击事件以及鼠标悬停事件的标签所对应的DOM元素节点打上已入队标记,同时标记超链接标签、按钮标签对应的DOM元素节点;将打上标记的DOM元素节点存入处理队列;
步骤(3):循环遍历处理队列中的标签,逐个触发点击事件或悬停事件;并对产生的HTTP请求,以及DOM元素节点的添加、删除、修改行为进行监控,同时禁止网页的页面跳转行为;
步骤(4):根据步骤(3)中行为的不同,进行不同的处理,具体如下:
a)如果产生的行为是HTTP请求,则发出请求,并在获取响应时回调网页脚本的响应处理过程;
b)如果产生的行为是DOM元素节点的添加,则执行该行为,添加该DOM元素节点到网页DOM树结构中对应的DOM元素节点下,并对添加的DOM元素节点进行遍历分析,对于具有步骤(2)中所述特征的网页标签所对应的DOM元素节点打上已入队标记,并加入处理队列;
c)如果产生的行为是DOM元素节点的删除,则不删除原DOM元素节点,仅修改该DOM元素节点的id与名称,对该修改后的DOM元素节点打上删除标记;
d)如果产生的行为是DOM元素节点的修改,则拷贝原DOM元素节点,修改原DOM元素节点的id、名称,对该修改后的原DOM元素节点打上修改标记,然后将监控到的修改应用到该拷贝后的新DOM元素节点上;最后对应用了修改的拷贝后的DOM元素节点进行分析,若为具有步骤(2)中所述特征的网页标签所对应的DOM元素节点,则打上标记并加入处理队列;
步骤(5):当处理队列为空后,即维护得到了该动态页面的完整页面数据。
2.根据权利要求1所述的一种采集动态网页完整数据内容的方法,其特征在于,所述步骤(1)中,对于图片、视频资源能根据需要不进行加载,从而提高采集的速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846183.2A CN107729385A (zh) | 2017-09-19 | 2017-09-19 | 一种采集动态网页完整数据内容的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846183.2A CN107729385A (zh) | 2017-09-19 | 2017-09-19 | 一种采集动态网页完整数据内容的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729385A true CN107729385A (zh) | 2018-02-23 |
Family
ID=61206620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710846183.2A Pending CN107729385A (zh) | 2017-09-19 | 2017-09-19 | 一种采集动态网页完整数据内容的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729385A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108846116A (zh) * | 2018-06-26 | 2018-11-20 | 北京京东金融科技控股有限公司 | 网页曝光数据采集方法、系统、电子设备和存储介质 |
CN109543127A (zh) * | 2018-11-26 | 2019-03-29 | 杭州安恒信息技术股份有限公司 | 一种页面刷新方法、装置、设备及可读存储介质 |
CN110083755A (zh) * | 2019-04-29 | 2019-08-02 | 北京脉冲星科技有限公司 | 一种高仿真解析网页方法、装置和电子设备 |
CN110163654A (zh) * | 2019-04-15 | 2019-08-23 | 上海基分文化传播有限公司 | 一种广告投放数据追踪方法和系统 |
CN111177614A (zh) * | 2019-11-22 | 2020-05-19 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 面向网页第三方注入内容的来源追踪方法、装置 |
CN111314298A (zh) * | 2020-01-16 | 2020-06-19 | 北京金堤科技有限公司 | 验证识别方法和装置、电子设备和存储介质 |
CN111523074A (zh) * | 2020-04-26 | 2020-08-11 | 成都思维世纪科技有限责任公司 | 一种前端渲染网站的动态页面敏感数据的采集系统 |
CN111651315A (zh) * | 2020-04-15 | 2020-09-11 | 北京皮尔布莱尼软件有限公司 | 一种页面的数据采集方法 |
CN111949903A (zh) * | 2020-08-28 | 2020-11-17 | 杭州安恒信息技术股份有限公司 | 一种网页数据采集方法、装置、设备及可读存储介质 |
CN112632358A (zh) * | 2020-12-29 | 2021-04-09 | 北京天融信网络安全技术有限公司 | 一种资源链接获取方法、装置、电子设备及存储介质 |
CN113239304A (zh) * | 2021-04-30 | 2021-08-10 | 西安交通大学 | 一种广告处理方法 |
WO2021226954A1 (zh) * | 2020-05-14 | 2021-11-18 | 深圳市欢太科技有限公司 | 信息爬取方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853717A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 网络爬虫 |
CN106649567A (zh) * | 2016-11-15 | 2017-05-10 | 杭州安恒信息技术有限公司 | 一种基于浏览器内核的网络爬虫系统 |
-
2017
- 2017-09-19 CN CN201710846183.2A patent/CN107729385A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853717A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 网络爬虫 |
CN106649567A (zh) * | 2016-11-15 | 2017-05-10 | 杭州安恒信息技术有限公司 | 一种基于浏览器内核的网络爬虫系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108846116A (zh) * | 2018-06-26 | 2018-11-20 | 北京京东金融科技控股有限公司 | 网页曝光数据采集方法、系统、电子设备和存储介质 |
CN109543127A (zh) * | 2018-11-26 | 2019-03-29 | 杭州安恒信息技术股份有限公司 | 一种页面刷新方法、装置、设备及可读存储介质 |
CN109543127B (zh) * | 2018-11-26 | 2020-12-11 | 杭州安恒信息技术股份有限公司 | 一种页面刷新方法、装置、设备及可读存储介质 |
CN110163654A (zh) * | 2019-04-15 | 2019-08-23 | 上海基分文化传播有限公司 | 一种广告投放数据追踪方法和系统 |
CN110083755A (zh) * | 2019-04-29 | 2019-08-02 | 北京脉冲星科技有限公司 | 一种高仿真解析网页方法、装置和电子设备 |
CN111177614A (zh) * | 2019-11-22 | 2020-05-19 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 面向网页第三方注入内容的来源追踪方法、装置 |
CN111314298A (zh) * | 2020-01-16 | 2020-06-19 | 北京金堤科技有限公司 | 验证识别方法和装置、电子设备和存储介质 |
CN111651315A (zh) * | 2020-04-15 | 2020-09-11 | 北京皮尔布莱尼软件有限公司 | 一种页面的数据采集方法 |
CN111523074A (zh) * | 2020-04-26 | 2020-08-11 | 成都思维世纪科技有限责任公司 | 一种前端渲染网站的动态页面敏感数据的采集系统 |
WO2021226954A1 (zh) * | 2020-05-14 | 2021-11-18 | 深圳市欢太科技有限公司 | 信息爬取方法、装置、电子设备及存储介质 |
CN111949903A (zh) * | 2020-08-28 | 2020-11-17 | 杭州安恒信息技术股份有限公司 | 一种网页数据采集方法、装置、设备及可读存储介质 |
CN111949903B (zh) * | 2020-08-28 | 2024-03-08 | 杭州安恒信息技术股份有限公司 | 一种网页数据采集方法、装置、设备及可读存储介质 |
CN112632358A (zh) * | 2020-12-29 | 2021-04-09 | 北京天融信网络安全技术有限公司 | 一种资源链接获取方法、装置、电子设备及存储介质 |
CN113239304A (zh) * | 2021-04-30 | 2021-08-10 | 西安交通大学 | 一种广告处理方法 |
CN113239304B (zh) * | 2021-04-30 | 2023-03-28 | 西安交通大学 | 一种广告处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729385A (zh) | 一种采集动态网页完整数据内容的方法 | |
US11755387B1 (en) | Updating code of an app feature based on a value of a query feature | |
US8756593B2 (en) | Map generator for representing interrelationships between app features forged by dynamic pointers | |
CA2588219C (en) | Method and apparatus for an application crawler | |
US8589876B1 (en) | Detection of central-registry events influencing dynamic pointers and app feature dependencies | |
US7584194B2 (en) | Method and apparatus for an application crawler | |
US9003423B1 (en) | Dynamic browser compatibility checker | |
US9805006B1 (en) | Asynchronous loading of scripts in web pages | |
US10963138B1 (en) | Webpage testing tool | |
CN103268361B (zh) | 网页中隐藏url的提取方法、装置和系统 | |
CN108304498A (zh) | 网页数据采集方法、装置、计算机设备和存储介质 | |
US20160259773A1 (en) | System and method for identifying web elements present on a web-page | |
CN106021079A (zh) | 一种基于用户频繁访问序列模型的Web应用性能测试方法 | |
CN101515300A (zh) | 一种Ajax网页内容的抓取方法及系统 | |
CN103177115A (zh) | 一种提取网页页面链接的方法和装置 | |
CN101753598B (zh) | 用于整合多个web应用的方法和Web应用集成器 | |
CN113836450B (zh) | 一种基于可视化操作获取xpath的数据接口生成方法 | |
CN112559278A (zh) | 操作数据的获取方法和装置 | |
CN116400993B (zh) | 用户使用客服页面功能时教学方法和电子设备 | |
CN112130854B (zh) | 一种iptv检测探针系统关键字的方法 | |
Perdeck | ASP. NET Site Performance Secrets: Simple and Proven Techniques to Quickly Speed Up Your ASP. NET Web Site | |
Cheng et al. | Analysis, Design and Implementation of Exception Handling in WWW Services | |
Svensson et al. | Moving usability testing onto the Web | |
Lakshmiraghavan et al. | Debugging and Tracing |
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 |
Application publication date: 20180223 |
|
RJ01 | Rejection of invention patent application after publication |