CN111814024A - 分布式数据采集方法、系统及存储介质 - Google Patents
分布式数据采集方法、系统及存储介质 Download PDFInfo
- Publication number
- CN111814024A CN111814024A CN202010819714.0A CN202010819714A CN111814024A CN 111814024 A CN111814024 A CN 111814024A CN 202010819714 A CN202010819714 A CN 202010819714A CN 111814024 A CN111814024 A CN 111814024A
- Authority
- CN
- China
- Prior art keywords
- task
- crawling
- crawled
- downloaders
- project
- 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.)
- Granted
Links
Images
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
-
- 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]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本公开提供了一种分布式数据采集方法、系统及可读存储介质,该方法包括针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;任务分配器基于所述项目名生成爬取任务,并分配所述爬取任务;多个网页下载器基于所述项目名和所述爬取任务分布式地进行数据采集。本公开解决了相关技术中由于网络爬虫的任务是多变的,经常因为网站和爬取对象的变化需要做大量的变更工作而导致编写各种流程复杂繁琐的问题,具有提高工作效率的有益效果。
Description
技术领域
本公开涉及互联网技术领域,特别涉及一种分布式数据采集方法、系统及存储介质。
背景技术
随着网络的迅速发展,互联网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。
为了解决上述问题,定向爬取相关网页资源的网络爬虫应运而生。网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots)。它是一种按照一定的规则,自动地爬取互联网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页内容。
网络爬虫架构主要由三个部分组成:网络爬虫调度端、网络爬虫主程序和目标数据。其中,网络爬虫调度端,主要负责开启网络爬虫主程序。网络爬虫主程序分为三个部分:1)URL管理器:管理URL,包括已经爬取过的URL和待爬取的URL;2)网页下载器:根据URL地址,将网页下载保存到本地,并存储为字符串;3)网页解析器:将存储的字符串中有价值的数据进行解析。目标数据,是所爬取的有价值数据。
网络爬虫的架构流程通常如下:爬虫系统调度端询问URL管理器,从一个URL或者多个URL开始,将他们放在“待爬取”的URL队列中,系统按照一定的顺序从队列中取出URL地址,将其传送给网页下载器并下载网页内容,调度端接收到网页下载的内容后,将网页内容发送给网页解析器,爬取想要的内容。在爬取的过程中,爬虫还会碰到URL,在已经下载的URL队列中检查,如果没有被爬取过,确认是新的URL,则放到URL队列末尾,等待爬取。上面过程是循环往复进行的,直到“待爬取”的URL队列为空停止爬取。
网络爬虫的任务是多变的,经常因为网站和爬取对象的变化需要做大量的变更工作,这导致编写各种流程复杂繁琐。
发明内容
为了解决上述技术问题至少之一,本公开提供了一种分布式数据采集方法、系统、及存储介质。
根据本公开的第一个方面,提供了一种分布式数据采集方法,包括:针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;任务分配器基于所述项目名生成爬取任务,并分配所述爬取任务;多个网页下载器基于所述项目名和所述爬取任务分布式地进行数据采集。
在本公开的一个示例性实施方式中,所述任务分配器分配所述爬取任务包括:所述任务分配器将所述爬取任务发送到任务队列中,以在所述任务队列中管理所述爬取任务。
在本公开的一个示例性实施方式中,多个网页下载器基于所述项目名和所述爬取任务分布式地进行数据采集包括:所述多个网页下载器基于其顶级配置文件中预先配置的任务队列从所述任务队列中获取相应的任务结构,其中,所述任务结构中包括所述项目名;所述多个网页下载器基于所述项目名确定调用所述多个网页下载器中的哪一个网页下载器进行所述爬取任务;所确定的网页下载器基于所述爬取任务进行数据采集。
在本公开的一个示例性实施方式中,所述任务结构中还包括至少以下之一:所述爬取任务的主要信息字段;URL地址;以及用于标识同一个项目不同的解析流程的节点令牌字段。
在本公开的一个示例性实施方式中,所确定的网页下载器基于所述爬取任务进行数据采集包括:在所述节点令牌字段表示进行列表页爬取的情况下,所确定的网页下载器进行列表页爬取,并把所爬取的列表页任务回传到所述任务队列中;在所述节点令牌字段表示进行详情页爬取的情况下,所确定的网页下载器通过解析器的详情爬取流程爬取详情,并将所爬取的详情发送到消息队列中。
在本公开的一个示例性实施方式中,将所爬取的详情发送到消息队列中之后,所述方法还包括:保存器根据所述保存器的顶级配置文件配置的所述消息队列从所述消息队列中获取所爬取的详情结果;所述保存器通过相应的项目预定的保存方式保存所爬取的详情结果。
在本公开的一个示例性实施方式中,所述多个网页下载器的每一个基于以下公式判断过载概率:
其中,P表示网页下载器的过载概率,m表示所述项目数,t2和t1表示时间,n表示所述任务分配器分配的任务个数,j表示所述列表页任务的个数。
在本公开的一个示例性实施方式中,所述多个网页下载器的每一个基于以下公式判断工作效率:
其中,f表示网页下载器的工作效率,x表示所述多个网页下载器的个数,a表示下载速率的泊松分布值,m表示所述项目数,n表示所述任务分配器分配的任务个数。
根据本公开的另一个方面,提供了一种分布式数据采集系统,包括项目配置模块,被配置为针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;任务分配器,被配置为基于所述项目名生成爬取任务,并分配所述爬取任务;多个网页下载器,被配置为基于所述项目名和所述爬取任务分布式地进行数据采集。。
根据本公开的又一个方面,提供了一种计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时用于实现如上描述的分布式数据采集方法。
本公开通过针对不同的爬取项目配置不同的项目名、基于所述项目名生成爬取任务,并分配所述爬取任务,然后基于所述项目名和所述爬取任务分布式地进行数据采集,解决了相关技术中由于网络爬虫的任务是多变的,经常因为网站和爬取对象的变化需要做大量的变更工作而导致编写各种流程复杂繁琐的问题,具有提高工作效率的有益效果。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施方式及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是根据本公开实施方式的分布式数据采集系统的结构示意图。
图2是根据本公开实施方式的分布式数据采集方法的流程示意图。
图3是根据本公开实施方式的另一种分布式数据采集方法的流程示意图。
图4是根据本公开实施方式的另一种分布式数据采集系统的结构示意图。
图5为适于用来实现本公开实施方式的分布式数据采集系统的计算机设备的结构示意图。
具体实施方式
为使本公开实施的目的、技术方案和优点更加清楚,下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。基于本公开中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。下面结合附图对本公开的实施方式进行详细说明。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了让爬虫工程师从因爬虫任务多变而导致的重复繁琐的流程中解放出来,专注于爬虫解析的开发,根据本公开一个示例性实施方式,提供了一种分布式数据采集系统,如图1所示,该系统包括任务分配器(dispatcher)10、远程字典服务(redis)任务队列12、网页下载器(worker)14、消息队列(rbbitMQ)16和保存器(recever)18。
Dispatcher主要用于任务生成和发送,其将任务发送到redis任务队列中以供多个worker消耗。在本公开的一个示例性实施方式中,dispatcher运行python3-mdispatcher.dispatcher_schedule-p xxxx,其中,xxxx是需要运行的项目名,这样,即可调用对应的项目定制的发送端任务机制进行任务发送。
Redis对用于爬取的请求进行存储和调度(Schedule),并对爬取产生的项目(items)进行存储以供后续处理使用。Redis是一个key-value存储系统,其支持存储的数据类型很多,包括字符串(string)、链表(list)、集合(set)、和哈希(hash)类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。
在本公开的一个示例性实施方式中,使用redis来维护一个url队列,然后worker都连接这一个redis以获取url。当worker在redis处取走一个url后,redis会将这个url从队列中清除,保证不会被2个worker拿到同一个url。即使可能2个worker同时请求拿到同一个url,在返回结果的时候redis还会再做一次去重处理,这样就能达到分布式效果。
Worker根据顶级配置文件wroker.conf配置的redis任务队列获取任务进行爬取。其中,需要注意的是从redis获取的任务结构如下所示:|{″data″:{″url″:″http://rmfygg.court.gov.cn/psca/lgnot/bulletin/2017-11-12_0_325.html″},″project_name″:″bulletn″,″nodeToken″:1}。该任务结构是json结构,其中,data字段是一次任务的主要信息字段;project_name是任务对应的项目名,这个字段是必须的,因为worker根据这个字段确定调用哪个项目的worker进行爬取任务;nodeToken字段用来区分同一个项目不同的解析流程,该字段最常用的值是1和2,其中,1标识进行某个项目的列表页爬取,可以把爬取的详情页任务回传到redis任务队列中去,2标识详情页爬取,通过解析(parse)的详情爬取流程爬取并将结果发送到rabbitMQ中去。
RabbitMQ是后台开发常用的中间件,其是使用Erlang开发的消息队列。相比其他消息队列,RabbitMQ的优势在于文档较全,支持多种客户端。使用消息队列可以使系统异步化,降低响应时间,并减少不同模块的耦合,同时消除峰值,避免并发请求过多系统无法响应。RabbitMQ用于保存爬取的详情信息。
Recever根据顶级配置文件Recever.conf配置的rabbitMQ消息队列获取爬取的结果,并通过对应的项目定制的保存方式将数据保存起来。
本公开实施方式中的整个爬虫体系中通过多级配置来完成调用的,同一个项目是通过项目名来唯一确定的配置调用已经爬取过程。
根据本公开一个示例性实施方式,提供了一种分布式数据采集方法,如图2所示,该方法包括以下步骤:
步骤S202,任务生成和发送。
Dispatcher用于任务生成并发送所生产的任务。Dispatcher运行python3-mdispatcher.dispatcher_schedule-p xxxx,其中xxxx传入需要运行的项目名即可调用对应的项目定制的发送端任务机制进行任务发送。dispatcher将任务发送到redis任务队列中以提供多个worker消耗。
在本公开的一个示例性实施方式中,Dispatcher定义任务(task)基础类。任务的生成通常可以通过关键词生成、通过程序生成或者从数据库查询任务而生成。例如,可以通过以下代码生成任务:
在本公开的一个示例性实施方式中,启动爬虫进程的请求可以由用户执行爬虫程序发起,也可以由其他第三方的应用程序通过调用爬虫程序发起。
步骤S204,管理URL。
作为URL管理器的redis任务队列管理URL。Redis任务队列负责保存URL并且在取得某一个网页之后派分新的URL,同时还要避免网页的重复收集。重复收集是指物理上存在的一个网页,在没有更新的前提下,被重复访问,造成资源的浪费,其主要原因是没有清楚地记录已经访问的URL从而无法辨别。所以,Redis任务队列维护两个列表,“已访问表”,和“未访问表”。每个URL对应的页面被爬取之后,该URL放入已访问表中,而从该页面提取出来的URL则放入未访问表中。当向dispatcher请求URL的时候,先验证该URL是否在已访问表中,然后再进行作业。
步骤S206,根据URL下载网页。
作为网页下载器的worker根据URL地址下载网页。针对工商类型网站、普通类型网站,区别是否可以通过时间间隔来优化请求。针对非同一类型域名,应并发请求;针对同一类型域名,要进行负载请求和dns缓存。获取到网页数据之后,进行数据解析,并将解析的结果发送到RabbitMQ。Worker还要确定是否出发ip切换,并做一些前置操作。
在本公开的示例性实施方式中,网页下载器的每一个基于以下公式判断过载概率:
其中,P表示网页下载器的过载概率,m表示所述项目数,t2和t1表示时间,n表示所述任务分配器分配的任务个数,j表示所述列表页任务的个数。如果过载概率比较大,则暂停给该网页下载器分配任务。
在本公开的示例性实施方式中,网页下载器可以基于以下公式判断其工作效率:
其中,f表示网页下载器的工作效率,x表示所述多个网页下载器的个数,a表示下载速率的泊松分布值,m表示所述项目数,n表示所述任务分配器分配的任务个数。在工作效率低于阈值的情况下,暂停给该网页下载器分配任务。
步骤S208,保存下载的网页。
Recever根据顶级配置文件Recever.conf配置的rabbitMQ任务队列获取爬取的结果,并通过对应的项目定制的保存方式将数据保存起来。例如,mq缓存和mysql分装。
根据本公开一个示例性实施方式,提供了另一种分布式数据采集方法,该数据采集以收集音乐网站上的歌曲为例,如图3所示,该方法包括以下步骤:
步骤S302,建立一个新项目。
在本公开的一个示例性实施方式中,采用Python语言来构建分布式数据采集系统的框架。用Python构建网络抓取工具的一个优点是Python的语法简单易懂。建立一个获取音乐网站上的歌曲的新项目。
步骤S304,请求URL。
在Python中,经常将库用作项目的一部分。在示例性实施方式中,将使用两个库:Beautiful Soup和Requests。通过请求库,可以请求url,并访问这些HTML页面上的数据。Beautiful Soup包含一些简单的方法,可直接从Python脚本中识别内容中的标签。
发出URL请求,并让BeautifulSoup获取页面中的所有文本。URL只是一个字符串,其中包含要抓取的HTML页面的地址。HRML页面中的内容是URL请求的响应内容。
需要注意的是所爬取的数据中某些信息是无法直接通过网页源码提取出来的,需要通过加密的动态包获得。例如,在爬取网站时,常常会遇到一些网页通过javascript(js)计算token,并回传给服务器验证的情况。由于爬虫一般只爬取html文件,而不会执行js等文件,所以无法生成这个token,也进而无法爬取网页。js的加密没有特别多的办法,常见有MD5加密、Base64加密和shal加密。要破解加密算法,首先用常用的加密算法来测试。确定加密方法之后,输入密文,并输入密钥,之后才能输出原文。
步骤S306,网页抓取。
将输入设置为顶级域,并选择设置搜索深度。默认值为两个深度。深度是指距离起点站点地图要遍历的层数。
将输入的参数传递到网站地图算法中,该算法将爬取该网站并返回一个包含所有找到的链接或内容的对象。如果将深度从1更改为2,则会注意到每个链接现在都有一系列其他链接。
worker收集的数据将在很大程度上取决于构建时提供的参数。至少,每个Web抓取项目都需要有一个要抓取的URL。网络抓取工具需要知道哪些标签可以查找要抓取的信息。在相关技术中,可以看到可能会有很多不想抓取的信息,例如标题,徽标,导航链接等。大多数实际的要抓取的内容可能都在段落标记中。
此时,可以构建一个worker,收集所有正文内容。或者,可以进一步过滤抓取内容,但指定仅在其中包含某些内容的情况下才抓取这些内容。例如,只对收集提及某个单词或主题的内容(例如“歌曲”)感兴趣。
遍历所有键值来分析网点地图。这样做,是为了获得一个干净的数组或队列,可用于在分析网页时进行迭代。遍历每个链接并将其通过管道传递到解析器中以分析URL。
步骤S308,将数据存储为JSON。
所抓取的页面内容可以被解析,搜索,重新格式化,将其数据复制到消息队列中。通常会从页面中提取出某些东西,以将其用于其他地方。例如,从所抓取的页面中查找名称和电话号码,或公司名称或地址,并将其复制到列表中。
在本公开的示例性实施方式中,将URL请求返回的抓取内容转换为JSON格式的数据。JSON代表js对象符号。在Python中,术语是Dicts。无论哪种情况,此数据都将采用键/值对的形式。分析的结果是一个包含页面摘要,日期,缩略图,文本内容,标题,状态代码等的对象。
例如,获取的社交媒体的数据格式可为如下结构:
可以将上述数据存储在数组中或者消息队列中,使得以后可以更轻松地解析数据。
本公开实施方式还提供了另一种分布式数据采集系统,该系统如图4所示,包括:项目配置模块42,被配置为针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;任务分配器10,被配置为基于所述项目名生成爬取任务,并分配所述爬取任务;多个网页下载器14,被配置为基于所述项目名和所述爬取任务分布式地进行数据采集。
本公开提供的分布式数据采集方法和系统,通过按照爬取结果的种类而非各网站的设计结构布置爬取进程,构建了利于扩展的水平分层架构设计模式,使得一个爬虫模块能够爬取不同网站的数据,网络请求和计算压力不会集中在某个复杂的网站上,有利于实现机器负载均衡,充分利用资源。
下面参考图5,其示出了适于用来实现本公开实施方式的计算机设备800的结构示意图。图5示出的计算机设备仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图5所示,计算机设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分708加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
根据本公开的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,这些模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时按上述方法对数据进行处理。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种分布式数据采集方法,其特征在于,包括:
针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;
任务分配器基于所述项目名生成爬取任务,并分配所述爬取任务;
多个网页下载器基于所述项目名和所述爬取任务分布式地进行数据采集。
2.如权利要求1所述的分布式数据采集方法,其特征在于,所述任务分配器分配所述爬取任务包括:所述任务分配器将所述爬取任务发送到任务队列中,以在所述任务队列中管理所述爬取任务。
3.如权利要求2所述的分布式数据采集方法,其特征在于,多个网页下载器基于所述项目名和所述爬取任务分布式地进行数据采集包括:
所述多个网页下载器基于其顶级配置文件中预先配置的任务队列从所述任务队列中获取相应的任务结构,其中,所述任务结构中包括所述项目名;
所述多个网页下载器基于所述项目名确定调用所述多个网页下载器中的哪一个网页下载器进行所述爬取任务;
所确定的网页下载器基于所述爬取任务进行数据采集。
4.如权利要求3所述的分布式数据采集方法,其特征在于,所述任务结构中还包括至少以下之一:所述爬取任务的主要信息字段;URL地址;以及用于标识同一个项目不同的解析流程的节点令牌字段。
5.如权利要求4所述的分布式数据采集方法,其特征在于,所确定的网页下载器基于所述爬取任务进行数据采集包括:
在所述节点令牌字段表示进行列表页爬取的情况下,所确定的网页下载器进行列表页爬取,并把所爬取的列表页任务回传到所述任务队列中;
在所述节点令牌字段表示进行详情页爬取的情况下,所确定的网页下载器通过解析器的详情爬取流程爬取详情,并将所爬取的详情发送到消息队列中。
6.如权利要求5所述的分布式数据采集方法,其特征在于,将所爬取的详情发送到消息队列中之后,所述方法还包括:
保存器根据所述保存器的顶级配置文件配置的所述消息队列从所述消息队列中获取所爬取的详情结果;
所述保存器通过相应的项目预定的保存方式保存所爬取的详情结果。
9.一种分布式数据采集系统,其特征在于,包括:
项目配置模块,被配置为针对不同的爬取项目配置不同的项目名,所述项目名用于唯一标识所述爬取项目;
任务分配器,被配置为基于所述项目名生成爬取任务,并分配所述爬取任务;
多个网页下载器,被配置为基于所述项目名和所述爬取任务分布式地进行数据采集。
10.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010819714.0A CN111814024B (zh) | 2020-08-14 | 2020-08-14 | 分布式数据采集方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010819714.0A CN111814024B (zh) | 2020-08-14 | 2020-08-14 | 分布式数据采集方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111814024A true CN111814024A (zh) | 2020-10-23 |
CN111814024B CN111814024B (zh) | 2021-09-03 |
Family
ID=72860542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010819714.0A Active CN111814024B (zh) | 2020-08-14 | 2020-08-14 | 分布式数据采集方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111814024B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579229A (zh) * | 2020-12-01 | 2021-03-30 | 贝壳技术有限公司 | 一种应用中的页面数据处理方法和装置 |
CN112732996A (zh) * | 2021-01-11 | 2021-04-30 | 深圳市洪堡智慧餐饮科技有限公司 | 一种基于异步aiohttp多平台分布式数据爬取方法 |
CN112765213A (zh) * | 2020-12-31 | 2021-05-07 | 永辉云金科技有限公司 | 一种二代征信自动化查询方法、系统及计算机设备 |
CN113239253A (zh) * | 2021-04-09 | 2021-08-10 | 北京皮尔布莱尼软件有限公司 | 一种网络爬虫实现方法、系统、计算设备及存储介质 |
CN113515682A (zh) * | 2021-05-19 | 2021-10-19 | 平安国际智慧城市科技股份有限公司 | 数据爬取方法、装置、计算机设备和存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1365908A (zh) * | 2002-02-26 | 2002-08-28 | 乔永康 | 动态机动车超载自动识别检测系统及方法 |
US7363374B2 (en) * | 2001-04-27 | 2008-04-22 | International Business Machines Corporation | Method and system for fault-tolerant remote boot in the presence of boot server overload/failure with self-throttling boot servers |
CN101499096A (zh) * | 2009-03-18 | 2009-08-05 | 北京邮电大学 | 分布式爬虫集群系统 |
CN103559219A (zh) * | 2013-10-18 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点 |
CN104408110A (zh) * | 2014-11-24 | 2015-03-11 | 北京奇虎科技有限公司 | 数据请求的方法、装置及系统 |
CN105591964A (zh) * | 2015-10-14 | 2016-05-18 | 中国银联股份有限公司 | 一种用于互联网系统的过载保护装置和方法 |
CN107391775A (zh) * | 2017-08-28 | 2017-11-24 | 湖北省楚天云有限公司 | 一种通用的网络爬虫模型实现方法及系统 |
CN109211545A (zh) * | 2018-08-27 | 2019-01-15 | 广西科技大学鹿山学院 | Cnc运动轴负载自动报警装置及其方法 |
US10657123B2 (en) * | 2015-09-16 | 2020-05-19 | Sesame Software | Method and system for reducing time-out incidence by scoping date time stamp value ranges of succeeding record update requests in view of previous responses |
CN111176233A (zh) * | 2019-12-29 | 2020-05-19 | 苏州宏软信息技术有限公司 | 基于分布式的数据采集方法 |
CN111399756A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种数据存储方法、数据下载方法及装置 |
-
2020
- 2020-08-14 CN CN202010819714.0A patent/CN111814024B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363374B2 (en) * | 2001-04-27 | 2008-04-22 | International Business Machines Corporation | Method and system for fault-tolerant remote boot in the presence of boot server overload/failure with self-throttling boot servers |
CN1365908A (zh) * | 2002-02-26 | 2002-08-28 | 乔永康 | 动态机动车超载自动识别检测系统及方法 |
CN101499096A (zh) * | 2009-03-18 | 2009-08-05 | 北京邮电大学 | 分布式爬虫集群系统 |
CN103559219A (zh) * | 2013-10-18 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点 |
CN104408110A (zh) * | 2014-11-24 | 2015-03-11 | 北京奇虎科技有限公司 | 数据请求的方法、装置及系统 |
US10657123B2 (en) * | 2015-09-16 | 2020-05-19 | Sesame Software | Method and system for reducing time-out incidence by scoping date time stamp value ranges of succeeding record update requests in view of previous responses |
CN105591964A (zh) * | 2015-10-14 | 2016-05-18 | 中国银联股份有限公司 | 一种用于互联网系统的过载保护装置和方法 |
CN107391775A (zh) * | 2017-08-28 | 2017-11-24 | 湖北省楚天云有限公司 | 一种通用的网络爬虫模型实现方法及系统 |
CN109211545A (zh) * | 2018-08-27 | 2019-01-15 | 广西科技大学鹿山学院 | Cnc运动轴负载自动报警装置及其方法 |
CN111399756A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种数据存储方法、数据下载方法及装置 |
CN111176233A (zh) * | 2019-12-29 | 2020-05-19 | 苏州宏软信息技术有限公司 | 基于分布式的数据采集方法 |
Non-Patent Citations (4)
Title |
---|
MONYA BAKER: "Next-generation sequencing:adjusting to data overload", 《NATURE METHODS》 * |
李成兵 等: "蓄意攻击下城市群客运交通网络级联抗毁性仿真", 《交通运输系统工程与信息》 * |
樊利民 等: "移动数据业务网络的过载控制", 《北京邮电大学学报》 * |
陈丽: "车辆WiFi接入互联网中基于轨迹的下载任务调度研究", 《中国优秀博硕士学位论文全文数据库(博士)工程科技Ⅱ辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579229A (zh) * | 2020-12-01 | 2021-03-30 | 贝壳技术有限公司 | 一种应用中的页面数据处理方法和装置 |
CN112579229B (zh) * | 2020-12-01 | 2023-07-28 | 贝壳技术有限公司 | 一种应用中的页面数据处理方法和装置 |
CN112765213A (zh) * | 2020-12-31 | 2021-05-07 | 永辉云金科技有限公司 | 一种二代征信自动化查询方法、系统及计算机设备 |
CN112732996A (zh) * | 2021-01-11 | 2021-04-30 | 深圳市洪堡智慧餐饮科技有限公司 | 一种基于异步aiohttp多平台分布式数据爬取方法 |
CN113239253A (zh) * | 2021-04-09 | 2021-08-10 | 北京皮尔布莱尼软件有限公司 | 一种网络爬虫实现方法、系统、计算设备及存储介质 |
CN113239253B (zh) * | 2021-04-09 | 2024-02-23 | 北京皮尔布莱尼软件有限公司 | 一种网络爬虫实现方法、系统、计算设备及存储介质 |
CN113515682A (zh) * | 2021-05-19 | 2021-10-19 | 平安国际智慧城市科技股份有限公司 | 数据爬取方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111814024B (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111814024B (zh) | 分布式数据采集方法、系统及存储介质 | |
CN110019350B (zh) | 基于配置信息的数据查询方法和装置 | |
US8527862B2 (en) | Methods for making ajax web applications bookmarkable and crawlable and devices thereof | |
CN109033403B (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN110019211A (zh) | 关联索引的方法、装置和系统 | |
CN109033406B (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN109683998A (zh) | 国际化实现方法、装置和系统 | |
CN103377064B (zh) | 一种页面脚本的加载方法及装置 | |
EP0895689A1 (en) | System for dynamically creating and managing a custom web site | |
CN109783562B (zh) | 一种业务处理方法和装置 | |
US20150120729A1 (en) | Web-based representational state transfer api server | |
CN109101607B (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN109829121B (zh) | 一种点击行为数据上报的方法和装置 | |
US8930518B2 (en) | Processing of write requests in application server clusters | |
CN110020304A (zh) | 一种加载页面的方法和装置 | |
CN109213824B (zh) | 数据抓取系统、方法和装置 | |
Medvedev et al. | Data ingestion and storage performance of iot platforms: Study of openiot | |
CN109086414B (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN116303608A (zh) | 一种应用服务的数据处理方法和装置 | |
CN110110184B (zh) | 信息查询方法、系统、计算机系统及存储介质 | |
CN109284428A (zh) | 数据处理方法、装置及存储介质 | |
CN111858621B (zh) | 监控业务流程的方法、装置、设备和计算机可读介质 | |
CN109145209B (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
Chen et al. | Optimization research and application of enterprise website based on web service | |
CN113138943B (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 |