CN109033115B - 一种动态网页爬虫系统 - Google Patents
一种动态网页爬虫系统 Download PDFInfo
- Publication number
- CN109033115B CN109033115B CN201710440709.7A CN201710440709A CN109033115B CN 109033115 B CN109033115 B CN 109033115B CN 201710440709 A CN201710440709 A CN 201710440709A CN 109033115 B CN109033115 B CN 109033115B
- Authority
- CN
- China
- Prior art keywords
- dynamic
- webpage
- content
- dynamic webpage
- renderer
- 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.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种动态网页爬虫系统,包括爬虫引擎、调度器、解析模块、项目管道、下载器,所述解析模块包括脚本解析器、渲染器、切换模块,所述脚本解析器通过构建出动态网页的请求规则、解析动态网页中的所有文件并且提取动态网页的内容交给项目管道;所述渲染器通过加载动态网页的异步加载信息构建出完整的动态网页DOM树,并通过模拟操作,获取动态网页内容;所述切换模块检测脚本解析器或渲染器解析动态网页所花费的时间和解析出的内容是否完整,若所需时间超过阈值或内容不完整,则进行切换。本发明提供的爬虫系统采用不同的爬取方法来爬取动态网页,爬取效率高,内存和网络网络资源占用低,具有自适应、智能化的特点。
Description
技术领域
本发明属于计算机领域,涉及爬虫系统,特别涉及一种动态网页爬虫系统。
背景技术
网络爬虫是一个自动提取网页的程序,传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL(Uniform Resource Locator统一资源定位符),在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统预设的停止条件。
随着互联网从Web1.0时代迅速进入Web2.0时代,基于Ajax(AsynchronousJavaScript and XML)的动态页面加载技术成为了各大公司的首选。伴随着移动互联网的兴起,JavaScript在移动端和PC客户端的优良特性被广泛挖掘,基于前端MVC/MVM的模式逐渐进入各大互联网公司的首选解决方案。动态网页的急剧攀升让基于动态Web页面的网络爬虫将越来越重要。
例如,某网站http://study.domain.com/course/courseLearn.htm?courseId=ID#/learn/video?lessonId=LESSONID&c。通常动态URL对应的动态页面,问号、等号等字符后面所跟的参数就是所需要查询的数据库数据。要获取动态页面的数据,一般采用脚本解析或利用浏览器对动态网页进行渲染来获取动态网页内容,然而脚本解析的前提是建立在目标动态网页信息部分或全部存在于异步加载信息,请求规则可获取、目标页面呈规律性分布;利用浏览器进行渲染也只能针对不完整的DOM(Document Object Model文档对象模型)数据结构、目标信息部分或全部存在于利用浏览器进行渲染针对不完整的DOM数据结构、目标信息部分或全部存在于渲染后的网页且目标网页动态信息呈结构性分布。
发明内容
为解决脚本解析和浏览器渲染的局限性,提高动态网页爬取的准确率和完整性,本发明提供了一种基于Scrapy(Scrapy是基于Python开发的一个快速,高层次的屏幕抓取和web抓取框架)的动态网页爬虫系统,包括爬虫引擎、调度器、解析模块、项目管道、下载器,所述爬虫引擎,用于处理数据流,触发事务;
所述调度器,用于接收爬虫引擎或解析模块发出的请求,将请求压入队列中调度下载器进行下载,并在爬虫引擎再次请求的时候返回;
所述解析模块,用于构建或解析动态网页的异步加载信息,分析从下载器提取网页中的数据元素;
所述项目管道,用于处理由解析器从网页中抽取的数据或响应爬虫引擎的请求;
所述下载器,用于响应调度器的任务请求并下载网页内容,并将网页内容返回给解析器;
所述解析模块包括脚本解析器、渲染器、切换模块;
所述脚本解析器通过网络抓包工具搜索和查询动态信息的文件类型,根据动态信息的文件类型对动态信息文件的结构进行建模,构建出动态网页的请求规则、解析动态网页中的所有文件并且提取动态网页的内容交给项目管道;若解析失败,则由交由切换模块处理;
所述渲染器通过加载动态网页的异步加载信息构建出完整的动态网页DOM树,并通过模拟操作,解析出动态网页中的从服务器返回的异步加载内容直至完整提取动态网页内容,若解析失败则交由切换模块转向脚本解析器处理;
所述切换模块检测脚本解析器或渲染器解析动态网页所花费的时间和解析出的内容是否完整,若所需时间超过阈值或内容不完整,则进行切换。
作为本发明的优选方案,所述渲染器为无界面浏览器。
作为本发明的优选方案,所述无界面浏览器包括selenium、splash、htmlunit、phantomjs。在本发明的一个实施例中,所述无界面浏览器采用splash渲染容器对动态网页进行渲染。
为避免采用动态解析或利用浏览器进行渲染提取动态网页的盲目性,在本发明的一个实施例中,所述解析模块还包括预解析模块,所述预解析模块通过从URL库中随机抽取样本然后交由脚本解析器或渲染器进行爬取,记录爬取信息的完整度、爬取时间、资源消耗。
本发明的第二方面的目的在于提供一种动态网页提取方法,包括如下步骤:
S1:获取URL库,对URL库进行聚类分析,若存在聚类则进行步骤S2,若不存在聚类结束;
S2:从聚类中至少抽取一个随机抽取样本URL;
S3:分别采用脚本解析、渲染或采用脚本解析与渲染混合的方式对URL进行爬取;
S4:记录爬取信息的完整度、爬取时间、资源消耗等信息,通过优先算法选出最优爬虫方案,使用最优方案爬取聚类中的所有动态网页;
S5:处理爬取信息,并执行步骤S1。
作为本发明的优选方案,所述脚本解析还包括:
根据动态网页或网址信息生成请求规则,通过服务器的验证获取访问权限,根据请求规则获取异步加载信息。
进一步的,所述通过服务器的验证包括cookie认证、用户认证、301认证、302认证、图片文字认证、IP认证。
作为本发明的优选方案,所述渲染包括:利用无界面浏览器渲染异步加载信息,使用无界面浏览器的API模拟用户点击,从模拟事件的结果中提取目标信息。
作为本发明的优选方案,所述脚本解析与渲染混合的具体步骤为:通过脚本解析得出动态网页的请求规则,然后通过无界面浏览器加载采用脚本解析缺失的渲染参数,构建出完整的请求规则直至获取完整的异步加载信息。
作为本发明的优选方案,所述S4中的优先算法具体为:将提取后的动态页面提取信息的完整度,时间、资源消耗率作为变量采用单纯形法求出最优解。
本发明的有益效果是:
1.本发明是分析目前大部分网站的动态网页的结构和常规的动态页面的爬取方法,利用脚本解析的资源消耗低、速度快的优势,综合Web Driver在渲染方面的优势,提高爬虫的爬取准确率和自适应性。
2.设置一个切换模块,避免了采用单一爬取方法时遇到特殊情况而导致无法爬取陷入死循环的情况。
3.通过预先检测机制,对包含不同动态异步加载机制的动态网页采用不同的爬取策略,提高了解析的性能、减少内存和网络资源的占用,使得本发明所采用的方法在动态页面的爬取上更加自适应、智能化。
附图说明
图1是本发明的基本原理图;
图2是本发明的解析模块框架原理图;
图3是本发明的动态爬取方法的流程图;
图4是本发明采用脚本解析动态网页的流程图;
图5是本发明中采用脚本解析动态网页的通过服务器认证结的构图;
图6是本发明中采用脚本解析和渲染的流程图。
具体实施方式
为了更好的理解本发明所提出的技术方案,下面结合附图1-6和具体的实施例对本发明作进一步阐述。
如图1和图2所示,一种动态网页爬虫系统,包括爬虫引擎、调度器、解析模块、项目管道、下载器,
所述爬虫引擎,用于处理数据流,触发事务;
所述调度器,用于接收爬虫引擎或解析模块发出的请求,将请求压入队列中调度下载器进行下载,并在爬虫引擎再次请求的时候返回;
所述解析模块,用于构建或解析动态网页的异步加载信息,分析从下载器提取网页中的数据元素;
所述项目管道,用于处理由解析器从网页中抽取的数据或响应爬虫引擎的请求;
所述下载器,用于响应调度器的任务请求并下载网页内容,并将网页内容返回给解析器;所述解析模块包括脚本解析器、渲染器、切换模块,
所述脚本解析器通过网络抓包工具搜索和查询动态信息的文件类型,根据动态信息的文件类型对动态信息文件的结构进行建模,构建出动态网页的请求规则、解析动态网页中的所有文件并且提取动态网页的内容交给项目管道;若解析失败,则由交由切换模块处理;
所述渲染器通过加载动态网页的异步加载信息构建出完整的动态网页DOM树,并通过模拟操作,解析出动态网页中的从服务器返回的异步加载内容直至完整提取动态网页内容,若解析失败则交由切换模块转向脚本解析器处理;
所述切换模块检测脚本解析器或渲染器解析动态网页所花费的时间和解析出的内容是否完整,若所需时间超过阈值或内容不完整,则进行切换。
在本发明的一个实施例中,选取切换阈值时间为150ms,即当脚本解析或渲染器解析动态页面超过150ms仍无法返回时,则切换器对未解析的URL所采用的方法进行切换。
在本发明的另一个实施例中,考虑到现有爬虫系统可以是分布式架构,解析的时间和资源消耗都可实现优化,因此切换器的切换条件考虑解析后的动态页面的信息是否完整。
在本发明的一个实施例中,所述渲染器为无界面浏览器,常见的无界面浏览器benv、browser、launcher、Browserjet、CasperJS、DalekJS Ghostbuster、HeadlessBrowser、HtmlUnit、Jasmine-Headless-Webkit、Jaunt、jBrowserDriver、jedi-crawler、Lotte、Nightmare、PhantomJS、Selenium、SlimerJS、trifleJS、Zombie.js。
进一步的,在本发明的实施例中,所述无界面浏览器包括selenium、splash、htmlunit、phantomjs。
更进一步地,在本发明的一个实施例中,采用selenium与webdriver或hantomjs结合的方法进行动态页面提取。
为避免采用动态解析或利用浏览器进行渲染的盲目性,在本发明的一个实施例中,所述解析模块还包括预解析模块,所述预解析模块通过从URL库中随机抽取样本然后交由脚本解析器或渲染器进行爬取,记录爬取信息的完整度、爬取时间、资源消耗。
如图4至图6所示,本发明还提供了一种基于上述动态网页爬虫系统的动态网页提取方法,包括如下步骤:
S1:获取URL库,对URL库进行聚类分析,若存在聚类则进行步骤S2,若不存在聚类结束;
S2:从聚类中至少抽取一个随机抽取样本URL;
S3:分别采用脚本解析、渲染或采用脚本解析与渲染混合的方式对URL进行爬取;
S4:记录爬取信息的完整度、爬取时间、资源消耗等信息,通过优先算法选出最优爬虫方案,使用最优方案爬取聚类中的所有动态网页;
S5:处理爬取信息,并执行步骤S1。
作为本发明的优选方案,所述脚本解析还包括:根据动态网页或网址信息生成请求规则,通过服务器的验证获取访问权限,根据请求规则获取异步加载信息。进一步的,所述通过服务器的验证包括cookie认证、用户认证、301认证、302认证、图片文字认证、IP认证。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式的相关模块和软件架构做适应性变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
Claims (4)
1.一种动态网页爬虫系统,其特征在于,包括爬虫引擎、调度器、解析模块、项目管道、下载器,
所述爬虫引擎,用于处理数据流,触发事务;
所述调度器,用于接收爬虫引擎或解析模块发出的请求,将请求压入队列中调度下载器进行下载,并在爬虫引擎再次请求的时候返回;
所述解析模块,用于构建或解析动态网页的异步加载信息,分析从下载器提取网页中的数据元素;
所述项目管道,用于处理由解析器从网页中抽取的数据或响应爬虫引擎的请求;
所述下载器,用于响应调度器的任务请求并下载网页内容,并将网页内容返回给解析模块;
所述解析模块包括脚本解析器、渲染器、切换模块,
所述脚本解析器通过网络抓包工具搜索和查询动态信息的文件类型,根据动态信息的文件类型对动态信息文件的结构进行建模,构建出动态网页的请求规则、解析动态网页中的所有文件并且提取动态网页的内容交给项目管道;若解析失败,则交由切换模块处理;
所述渲染器通过加载动态网页的异步加载信息构建出完整的动态网页DOM树,并通过模拟操作,解析出动态网页中的从服务器返回的异步加载内容直至完整提取动态网页内容,若解析失败则交由切换模块转向脚本解析器处理;
所述切换模块检测脚本解析器或渲染器解析动态网页所花费的时间和解析出的内容是否完整,若所需时间超过阈值或内容不完整,则进行切换。
2.根据权利要求1所述的动态网页爬虫系统,其特征在于,所述渲染器为无界面浏览器。
3.根据权利要求2所述的动态网页爬虫系统,其特征在于,所述无界面浏览器包括如下任一:selenium、splash、htmlunit、phantomjs。
4.根据权利要求1所述的动态网页爬虫系统,其特征在于,所述解析模块还包括预解析模块,所述预解析模块通过从URL库中随机抽取样本然后交由脚本解析器或渲染器进行爬取,记录爬取信息的完整度、爬取时间、资源消耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440709.7A CN109033115B (zh) | 2017-06-12 | 2017-06-12 | 一种动态网页爬虫系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440709.7A CN109033115B (zh) | 2017-06-12 | 2017-06-12 | 一种动态网页爬虫系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033115A CN109033115A (zh) | 2018-12-18 |
CN109033115B true CN109033115B (zh) | 2021-02-19 |
Family
ID=64628606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710440709.7A Active CN109033115B (zh) | 2017-06-12 | 2017-06-12 | 一种动态网页爬虫系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033115B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110020062B (zh) * | 2019-04-12 | 2021-09-24 | 北京邮电大学 | 一种可定制的网络爬虫方法及系统 |
CN111898059B (zh) * | 2019-05-06 | 2023-12-22 | 千寻位置网络有限公司 | 网站页面质量评估和监控方法及其系统 |
CN110310158B (zh) * | 2019-07-08 | 2023-10-31 | 雨果跨境(厦门)科技有限公司 | 用户网络行为分析过程中精确匹配消费数据的工作方法 |
CN110348523A (zh) * | 2019-07-15 | 2019-10-18 | 北京信息科技大学 | 一种基于Stacking的恶意网页集成识别方法及系统 |
CN111310002B (zh) * | 2020-04-17 | 2023-04-07 | 西安热工研究院有限公司 | 一种基于分发器和配置表组合的泛型爬虫系统 |
CN111859075A (zh) * | 2020-07-30 | 2020-10-30 | 吉林大学 | 一种基于异步处理框架的具有自动测试功能的数据爬取方法 |
CN111881337B (zh) * | 2020-08-06 | 2021-06-01 | 成都信息工程大学 | 一种基于Scrapy框架的数据采集方法、系统及存储介质 |
CN111949851A (zh) * | 2020-08-14 | 2020-11-17 | 电子科技大学 | 一种解决js加密问题的爬虫方法 |
CN112115330A (zh) * | 2020-09-18 | 2020-12-22 | 电子科技大学成都研究院 | 一种优化定位精度及爬取效率的爬虫方法 |
CN113297449A (zh) * | 2021-05-21 | 2021-08-24 | 南京大学 | 一种流式爬虫实现方法及系统 |
CN114611039B (zh) * | 2022-02-25 | 2024-02-20 | 盐城天眼察微科技有限公司 | 异步加载规则的解析方法、装置、存储介质和电子设备 |
CN115905767B (zh) * | 2023-01-07 | 2023-06-02 | 珠海金智维信息科技有限公司 | 基于固定候选框目标检测算法的网页登录方法及系统 |
CN116719986B (zh) * | 2023-08-10 | 2023-12-26 | 深圳传趣网络技术有限公司 | 基于Python的数据抓取方法、装置、设备及存储介质 |
CN116991694B (zh) * | 2023-09-28 | 2024-01-26 | 中新云服(北京)科技有限公司 | 一种网页操作采集方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3107009A1 (en) * | 2015-06-19 | 2016-12-21 | Tata Consultancy Services Limited | Self-learning based crawling and rule-based data mining for automatic information extraction |
US10402906B2 (en) * | 2015-10-28 | 2019-09-03 | Qomplx, Inc. | Quantification for investment vehicle management employing an advanced decision platform |
CN106649810B (zh) * | 2016-12-29 | 2019-05-28 | 山东舜网传媒股份有限公司 | 基于Ajax的新闻网页动态数据的抓取方法及系统 |
CN106682218B (zh) * | 2016-12-30 | 2020-12-18 | 冶金自动化研究设计院 | 一种工业企业Web数据图形化系统及生成方法 |
-
2017
- 2017-06-12 CN CN201710440709.7A patent/CN109033115B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109033115A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033115B (zh) | 一种动态网页爬虫系统 | |
US10567407B2 (en) | Method and system for detecting malicious web addresses | |
CN101964025B (zh) | Xss检测方法和设备 | |
US7885950B2 (en) | Creating search enabled web pages | |
US8424004B2 (en) | High performance script behavior detection through browser shimming | |
CN102833212B (zh) | 网页访问者身份识别方法及系统 | |
CN102436564A (zh) | 一种识别被篡改网页的方法及装置 | |
CN105243159A (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫系统 | |
EP2414929A1 (en) | Method and system of retrieving ajax web page content | |
CN106776983B (zh) | 搜索引擎优化装置和方法 | |
CN107590236B (zh) | 一种面向建筑施工企业的大数据采集方法和系统 | |
CN111177519B (zh) | 网页内容获取方法、装置、存储介质及设备 | |
CN108595468A (zh) | 一种网页数据的获取方法、装置、服务器、终端和系统 | |
CN110851681A (zh) | 爬虫处理方法、装置、服务器及计算机可读存储介质 | |
CN112637361A (zh) | 一种页面代理方法、装置、电子设备及存储介质 | |
CN113918794B (zh) | 企业网络舆情效益分析方法、系统、电子设备及存储介质 | |
CN104281629A (zh) | 从网页中提取图片的方法、装置及客户端设备 | |
CN112866279B (zh) | 网页安全检测方法、装置、设备及介质 | |
CN114491560A (zh) | 一种漏洞检测方法、装置、存储介质及电子设备 | |
CN107526833B (zh) | 一种url管理方法、系统 | |
CN103365919A (zh) | 网页解析容器及方法 | |
CN111611462A (zh) | 一种app数据获取方法及系统 | |
CN110413909B (zh) | 基于机器学习的大规模嵌入式设备在线固件智能识别方法 | |
CN105190598A (zh) | 资源索引分类 | |
CN110020076B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |