CN112528119A - 一种基于Pulsar的分布式爬取网页信息的系统 - Google Patents

一种基于Pulsar的分布式爬取网页信息的系统 Download PDF

Info

Publication number
CN112528119A
CN112528119A CN202011518789.1A CN202011518789A CN112528119A CN 112528119 A CN112528119 A CN 112528119A CN 202011518789 A CN202011518789 A CN 202011518789A CN 112528119 A CN112528119 A CN 112528119A
Authority
CN
China
Prior art keywords
url
data
crawling
module
pulsar
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
CN202011518789.1A
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.)
Beijing Zhongan Zhida Technology Co ltd
Original Assignee
Beijing Zhongan Zhida Technology 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 Beijing Zhongan Zhida Technology Co ltd filed Critical Beijing Zhongan Zhida Technology Co ltd
Priority to CN202011518789.1A priority Critical patent/CN112528119A/zh
Publication of CN112528119A publication Critical patent/CN112528119A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • 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/957Browsing optimisation, e.g. caching or content distillation

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于Pulsar的分布式爬取网页信息的系统,涉及WEB管理模块、url管理模块、数据爬去模块、数据处理模块和数据存储模块,并使用上述模块依次进行处理。本发明能够满足海量页面的爬取,对海量url的管理去重,同时可以针对业务需求扩容或缩容本系统的部署而不需要复杂的操作和额外的开支。

Description

一种基于Pulsar的分布式爬取网页信息的系统
技术领域
本发明涉及一种海量网络页面下载提取的系统,尤其是涉及一种基于Pulsar(是一个企业级的发布-订阅消息系统)的分布式爬取网页信息的系统。
背景技术
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战,如何快速、准确、高质量的获取信息,是使用者迫切需要的。
普通的爬虫爬取效率低,质量差,不能满足使用者需要的海量数据,不能分析出优质的信息,当有大量的任务需要爬取时,扩展性差。
在传统消息系统中,存在一些问题。一方面,消息的存储和服务一般是紧耦合的,节点的扩容和运维不便,特别是在需要多备份来保证高可用性的场景。另一方面,消息的消费模式被固定,在企业内部需要维护多套系统来保证不同的消息消费场景。另外消息系统中,多租户,多机房互备等企业级的特性和功能也不太丰富,例如一些现有分布式爬虫使用了kafka作为消息队列,但是也存在了一些痛点,存储计算没有分离,难以扩容和缩容,没有IO隔离,写高了读不动,读高了写不动,没有多租户,IO模型过于简单,面对大量topic时性能下降严重,消费模型有限,无法利用部分业务可以接受消息无序的特点。
因此需要设计一种易扩展的爬虫框架,能够支持多种应用和网站的爬取,还应具有良好的可扩展性,支持IO读写分离,面对海量数据,同时还能保证高吞吐量和低延迟的性能,以便能够适应将来出现更加严格的需求。
发明内容
本发明提供了一种基于Pulsar的分布式爬取网页信息的系统,要解决丅述问题:研究表明接近30%的页面是重复的,动态页面的存在,客户端、服务器端脚本语言的应用使得指向相同Web信息的URL数量呈指数级增长。上述特征使得普通网络爬虫面临困难,主要体现在Web信息的巨大容量使得爬虫在给定时间内只能下载少量网页。为了提高爬取速度,网络通常会采取并行爬取的工作方式,随之引入了新的问题,重复性(并行运行的爬虫或爬行线程同时运行增加了重复页面),存储计算没有分离,难以扩容和缩容。
其技术方案如下所述:
一种基于Pulsar的分布式爬取网页信息的系统,包括以下模块,并使用下述模块依次进行处理:
(1)WEB管理模块:代理服务器使用Nginx集群服务器,提供登录服务,选用redis作为内存库;
(2)URL管理模块:系统获取内存库中的url,并存储到Plusar集群当中;
(3)数据爬取模块:系统获取目标url,使用HttpClient对网页进行下载,实现爬虫对大量url的存储和爬取;
(4)数据处理模块:使用Jsoup、Xsoup对页面处理提取信息;
(5)数据存储模块:处理后的数据,能够打印在控制台、存在本地文本或持久化存储到数据库。
通过WEB管理模块登录访问系统,添加url,URL管理模块读取内存库中的url并存储,数据爬取模块从URL管理模块中获取url,并进行页面的爬取,爬取后的页面交给数据处理模块,处理后的数据在数据存储模块中完成持久化存储。
在WEB管理模块中,接口服务提供系统的登录和操作功能,使用者登录系统页面,能够选择手动添加任务,填写爬取的url任务;或者按照格式要求,将整理好的url文件导入到系统中,通过导入功能,大批量的添加任务。
在WEB管理模块中,选用redis作为内存库时,添加的URL使用Redis的set进行去重。
在URL管理模块中,URL的存储库选用Pulsar,使用Apache BookKeeper实现持久性提供低延迟的持久存储。
Pulsar(是一个企业级的发布-订阅消息系统)接收到消息时,将消息数据发送到多个BookKeeper节点,所述节点将数据预写日志并将副本写入内存,在节点发出确认之前,日志被强制写入稳定存储,由于Pulsar向多个BookKeeper节点写入数据,因此只有当数据成功写入时,它才向生产者(生产数据的一方)发送确认。
在数据爬取模块中,下载组件使用HttpClientDownloader。
在数据处理模块中,使用Jsoup或Xsoup检查页面中是否含有TargetUrl,如果有则提取该url,并将该url添加到redis集群中。
在数据存储模块中,入库组件对处理后的数据,使用ConsolePipeline存储器能够在控制台中打印出来,使用FilePipeline存储器能够生成文件在本地保存,使用ResultPipeline存储器和mybatis将数据持久化到mysql中,或者使用jdbc持久化到其他数据库。
本发明能够满足海量页面的爬取,对海量url的管理去重,同时可以针对业务需求扩容或缩容本系统的部署而不需要复杂的操作和额外的开支。
附图说明
图1是本发明提供的方法基于的系统架构图;
图2是本发明提供的方法的流程示意图。
具体实施方式
为了实现上述的发明目的,本发明提供了以下技术方案。
本发明的核心思想是:提供一套爬虫爬取和存储框架,可以支持对大量url的存储和爬取。
所述基于Pulsar的分布式爬取网页信息的系统,使用redis对url做去重管理,Apache Pulsar具有灵活的消息传递模型、灵活的部署模式、多租户、读写之间的I/O隔离、良好的可扩展性等特点。尤其是扩展性,因为Kafka的topic的性能扩展受限于partitions的个数,而Puslar是对数据分片,容易扩展。使用pulsar对url存储管理提高爬虫采集节点的整体利用率,减少资源浪费,快速扩容或缩容。
所述系统主要涉及WEB管理模块、URL管理模块、数据爬取模块、数据处理模块和数据存储模块。
通过WEB管理模块,登录访问系统,添加url,URL管理模块读取内存库中的url并存储,数据爬取模块,从URL管理模块中获取url,并进行页面的爬取,爬取后的页面交给数据处理模块,处理后的数据在数据存储模块中完成持久化存储。
下面结合图1,对本发明提供的系统的具体实施方式作进一步详细描述。
1、WEB管理模块包含Nginx作为代理服务器,负载均衡,保证正常访问web服务;web接口服务,提供系统添加url功能;redis作为内存库使用,对url进行去重操作,并缓存。
A1.使用Nginx集群作为负载均衡服务器,负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务,将用户的所有HTTP请求均衡的分配到每一台机器上,充分发挥所有机器的性能,提高服务的质量和用户体验,可根据业务需求部署多套系统。A2.登录系统,在系统中,可以手动或批量导入url添加任务,任务中需要指定最终爬取的目标url;
在接口服务中,可以登录系统页面,选择手动添加任务,填写爬取的url任务。HelpUrl/TargetUrl是一个非常有效的爬虫开发模式,TargetUrl是我们最终要抓取的URL,最终想要的数据都来自这里,而HelpUrl则是为了发现这个最终URL,使用者需要访问的页面。几乎所有垂直爬虫的需求,都可以归结为对这两类URL的处理,例如:
对于博客页,HelpUrl是列表页,TargetUrl是文章页。
·对于论坛,HelpUrl是帖子列表,TargetUrl是帖子详情。
·对于电商网站,HelpUrl是分类列表,TargetUrl是商品详情。
在这个例子中,TargetUrl是最终的项目页,而HelpUrl则是项目搜索页,它会展示所有项目的链接。
A3.在接口服务器中,还可以按照格式要求,将整理好的url文件导入到系统中,通过导入功能,可以大批量的添加任务。
A4.内存库的作用是缓存数据,并对数据进行去重处理,这里本发明选用redis作为内存库。添加的URL使用Redis的set进行去重。优点是速度快,而且不会占用爬虫服务器的资源,可以处理更大数据量的数据爬取,防止多次爬取相同网页浪费资源,去重后的url提供给plusar集群进行管理存储。
使用redis对添加的url进行去重,redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set–有序集合)和hash(哈希类型,类似于Java中的map)。Redis基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,读写速度极快。
2、URL管理模块获取内存库中的URL,并进行持久化存储
B1.URL的存储库,选用Pulsar,使用Apache BookKeeper实现持久性它提供低延迟的持久存储。broker接收到消息时,它将消息数据发送到多个BookKeeper节点(节点数量取决于replication factor)。这些节点将数据预写日志,并将副本写入内存。在节点发出确认之前,日志被强制写入稳定存储。通过强制将日志写入存储器,即使在断电的情况下也可以保留数据。由于Pulsar中的broker(消息转发器,也负责一些控制和管理操作)向多个BookKeeper节点写入数据,因此只有当数据成功写入时,它才向生产者(生产数据的一方)发送确认。因此,即使存在硬件故障、网络分区和其他故障状态,Pulsar也能够确保零数据丢失。同时Pulsar还有很多优点,例如多租户,灵活的部署模式,灵活的消息传递模型,读写之间的I/O隔离等等。
使用ApachePulsar集群能够对去重后的URL进行存储。易于增加存储或服务,而无需重新平衡整个集群,多层架构允许存储可以被独立地添加,也允许在不停机的情况下扩展服务层和存储层,层级存储的优势有以流的方式永久保存原始数据,分区的容量不再受限,充分利用云存储或现有的廉价存储(例如HDFS),客户端无需关心数据究竟存储在哪。
3、数据爬取块
C1.下载组件,使用HttpClientDownloader,HttpClientDownloader基于HttpClient实现的下载器,一般来说,无须自己实现Downloader,不过HttpClientDownloader也预留了几个扩展点,以满足不同场景的需求。Downloader获取目标url开始爬取网页信息,下载页面。
系统获取目标url,使用HttpClient对网页进行下载。HttpClient是Apache中的一个开源的项目。它实现了HTTP标准中Client端的所有功能,使用它能够很容易地进行HTTP信息的传输。
4、数据处理模块
D1.处理组件,使用Jsoup对页面处理提取信息,Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据,还可以支持xpath;
D2.处理组件还可以使用Xsoup对页面处理提取信息,Xsoup是基于Jsoup开发的一款XPath解析器,提供方法更加方便简洁的提取内容,支持爬虫常用的语法,定义了几个对于爬虫来说,很方便的XPath函数更加符合爬虫开发的需要,Xsoup的性能比HtmlCleaner要快一倍以上。
D3.使用Jsoup或Xsoup检查页面中是否含有TargetUrl,如果有则提取该url,并将该url添加到redis集群中。
5、数据存储模块
E1.处理后数据,可以打印在控制台;
入库组件对处理后的数据,使用ConsolePipeline存储器可以在控制台中打印出来。
E2.处理后数据,可以JSON等格式存在本地文本中;
入库组件对处理后的数据,使用FilePipeline存储器可以生成文件在本地保存。
E3.处理后数据,可以持久化存储到mysql等数据库中。
入库组件对处理后的数据,使用ResultPipeline存储器和mybatis将数据持久化到mysql中或者使用jdbc等持久化到其他数据库。
如图2所示,利用系统的各模块,本发明包括以下操作步骤:
S1:代理服务:使用nginx作为代理服务器,通过代理访问WEB系统提供的接口服务;
S2:接口服务:用户通过账号密码登录系统,在系统中可以手动添加url或者导入url文件来批量添加到内存库中;
S3:内存库:使用redis的set对URL进行去重,去重后的url缓存在redis集群中;
S4:从内存库中读取url,并存储到URL存储库中;
S5:下载组件:从rul存储库中获取url,并下载页面,下载完成的页面交给处理组件进一步的处理;
S6:处理组件:对下载成功的页面进行提取相关内容,若页面中还含有目标url,则提取该url并存储到内存库中,若不含有则对提取的内容交给入库组件,进行存储;
S7:入库组件:对处理后的数据,可以选择不同的存储器存储到不同的地方,支持控制台打印,本地文件或存储到数据库中。
本发明能够满足海量页面的爬取,对海量url的管理去重,同时可以针对业务需求扩容或缩容本系统的部署而不需要复杂的操作和额外的开支。

Claims (8)

1.一种基于Pulsar的分布式爬取网页信息的系统,其特征在于,包括以下模块,并使用下述模块依次进行处理:
(1)WEB管理模块:代理服务器使用Nginx集群服务器,提供登录服务,选用redis作为内存库;
(2)URL管理模块:系统获取内存库中的url,并存储到Plusar集群当中;
(3)数据爬取模块:系统获取目标url,使用HttpClient对网页进行下载,用于实现爬虫对大量url的存储和爬取;
(4)数据处理模块:使用Jsoup、Xsoup对页面处理提取信息;
(5)数据存储模块:处理后的数据,能够打印在控制台、存在本地文本或持久化存储到数据库。
2.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在WEB管理模块中,接口服务提供系统的登录和操作功能,使用者登录系统页面,能够选择手动添加任务,填写爬取的url任务;或者按照格式要求,将整理好的url文件导入到系统中,通过导入功能,大批量的添加任务。
3.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在WEB管理模块中,选用redis作为内存库时,添加的URL使用Redis的set进行去重。
4.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在URL管理模块中,URL的存储库选用Pulsar,使用Apache BookKeeper实现持久性提供低延迟的持久存储。
5.根据权利要求4所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:Pulsar接收到消息时,将消息数据发送到多个BookKeeper节点,所述节点将数据预写日志并将副本写入内存,在节点发出确认之前,日志被强制写入稳定存储,由于Pulsar向多个BookKeeper节点写入数据,因此只有当数据成功写入时,它才向生产者发送确认。
6.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在数据爬取模块中,下载组件使用HttpClientDownloader。
7.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在数据处理模块中,使用Jsoup或Xsoup检查页面中是否含有TargetUrl,如果有则提取该url,并将该url添加到redis集群。
8.根据权利要求1所述的基于Pulsar的分布式爬取网页信息的系统,其特征在于:在数据存储模块中,入库组件对处理后的数据,使用ConsolePipeline存储器能够在控制台中打印出来,使用FilePipeline存储器能够生成文件在本地保存,使用ResultPipeline存储器和mybatis将数据持久化到mysql中,或者使用jdbc持久化到其他数据库。
CN202011518789.1A 2020-12-21 2020-12-21 一种基于Pulsar的分布式爬取网页信息的系统 Pending CN112528119A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011518789.1A CN112528119A (zh) 2020-12-21 2020-12-21 一种基于Pulsar的分布式爬取网页信息的系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011518789.1A CN112528119A (zh) 2020-12-21 2020-12-21 一种基于Pulsar的分布式爬取网页信息的系统

Publications (1)

Publication Number Publication Date
CN112528119A true CN112528119A (zh) 2021-03-19

Family

ID=75002049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011518789.1A Pending CN112528119A (zh) 2020-12-21 2020-12-21 一种基于Pulsar的分布式爬取网页信息的系统

Country Status (1)

Country Link
CN (1) CN112528119A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115018642A (zh) * 2022-06-08 2022-09-06 国泰君安证券股份有限公司 针对多源实时行情数据实现高可用接收及处理的系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677918A (zh) * 2016-03-03 2016-06-15 浪潮软件股份有限公司 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法
CN106649865A (zh) * 2016-12-31 2017-05-10 深圳市优必选科技有限公司 一种分布式服务器系统及数据处理方法
CN108804657A (zh) * 2018-06-08 2018-11-13 深圳市牛鼎丰科技有限公司 一种基于WebMagic的零编码可配置抓爬规则的爬虫系统
CN111209460A (zh) * 2019-12-27 2020-05-29 青岛海洋科学与技术国家实验室发展中心 基于scrapy爬虫框架的数据采集系统及方法
CN111737329A (zh) * 2020-06-13 2020-10-02 北京京投亿雅捷交通科技有限公司 一种轨道交通统一数据采集平台

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677918A (zh) * 2016-03-03 2016-06-15 浪潮软件股份有限公司 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法
CN106649865A (zh) * 2016-12-31 2017-05-10 深圳市优必选科技有限公司 一种分布式服务器系统及数据处理方法
CN108804657A (zh) * 2018-06-08 2018-11-13 深圳市牛鼎丰科技有限公司 一种基于WebMagic的零编码可配置抓爬规则的爬虫系统
CN111209460A (zh) * 2019-12-27 2020-05-29 青岛海洋科学与技术国家实验室发展中心 基于scrapy爬虫框架的数据采集系统及方法
CN111737329A (zh) * 2020-06-13 2020-10-02 北京京投亿雅捷交通科技有限公司 一种轨道交通统一数据采集平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
知乎: "Pulsar 与 Kafka 全方位对比(上篇):功能、性能、用例", pages 1 - 7, Retrieved from the Internet <URL:《https://www.zhihu.com/tardis/zm/sogou/art/182573701》> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115018642A (zh) * 2022-06-08 2022-09-06 国泰君安证券股份有限公司 针对多源实时行情数据实现高可用接收及处理的系统

Similar Documents

Publication Publication Date Title
JP6621543B2 (ja) ハイブリッドアプリケーションの自動更新
US20210349964A1 (en) Predictive resource identification and phased delivery of structured documents
CN109074377B (zh) 用于实时处理数据流的受管理功能执行
US9779109B2 (en) Storing a file in a cloud storage solution using multiple process threads
US8260913B2 (en) Reading a file from a cloud storage solution
US8533296B2 (en) Schema-based feed generation for media syndication
US20110276656A1 (en) Writing a file to a cloud storage solution
CN111010364B (zh) 用于基于离线对象的存储和模拟rest响应的系统
CN103631820B (zh) 分布式文件系统的元数据管理方法及设备
CN105144121A (zh) 高速缓存内容可寻址数据块以供存储虚拟化
CN102985921A (zh) 在具有电子资源数据库的客户端装置中高速缓存电子文档资源
KR101962301B1 (ko) 구조화 문서의 페이지렛의 캐싱
CN106909595B (zh) 一种数据迁移方法及装置
CN101594377A (zh) 用于管理Feed数据的系统和方法
CN113609374A (zh) 基于内容推送的数据处理方法、装置、设备及存储介质
CN109767274B (zh) 一种对海量发票数据进行关联存储的方法及系统
US20220188340A1 (en) Tracking granularity levels for accessing a spatial index
CN102281312A (zh) 一种数据加载方法、系统和数据处理方法、系统
CN112528119A (zh) 一种基于Pulsar的分布式爬取网页信息的系统
Davis Archiving the Web: A Case Study from the University of Victoria
US20180004767A1 (en) REST APIs for Data Services
Naseem et al. Extending HTML5 local storage to save more data; efficiently and in more structured way
CN111078975B (zh) 一种多节点增量式数据采集系统及采集方法
Abead et al. A comparative study of HDFS replication approaches
CN110866165A (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