CN105095299A - 图片抓取方法和系统 - Google Patents

图片抓取方法和系统 Download PDF

Info

Publication number
CN105095299A
CN105095299A CN201410209007.4A CN201410209007A CN105095299A CN 105095299 A CN105095299 A CN 105095299A CN 201410209007 A CN201410209007 A CN 201410209007A CN 105095299 A CN105095299 A CN 105095299A
Authority
CN
China
Prior art keywords
task
picture
server
captures
subprocess
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
CN201410209007.4A
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 Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410209007.4A priority Critical patent/CN105095299A/zh
Publication of CN105095299A publication Critical patent/CN105095299A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种图片抓取方法和系统,其中,方法包括:多个任务服务器的数据接口接收图片抓取请求;多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务;调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列;调度服务器按预设的规则从任务总队列中取出图片抓取任务,分发给多个任务服务器;多个任务服务器根据分发的图片抓取任务,对图片进行抓取。根据该方案,将不同任务服务器接收的图片抓取任务进行统一的调度,这能够均衡多个任务服务器上的抓取任务,充分利用了系统资源,避免了图片抓取任务搁置或延迟处理,提高了抓取效率,减少了等待时间。

Description

图片抓取方法和系统
技术领域
本发明涉及图片调度技术,具体涉及一种图片抓取方法和系统。
背景技术
在日常生活中,图片抓取技术被越来越广泛的应用。例如:一些电商网站、团购网站、图片网站等很多小型网站,由于受到自身网站服务器性能、网站软件配置等限制,这些小型网站上的图片在展现时速度较慢,而且展现过程也不稳定,这时,上述网站自身的图片存储在第三方的大型的图片服务器上,所述图片服务器对图片进行抓取来解决图片展现速度慢、展现不稳定的问题。又例如:一些图片搜索网站或新闻网站等,通过图片抓取技术来抓取整个互联网上的大部分图片,然后对抓取得到的图片进行分析、过滤,最后进行信息的发布。
图片服务器要处理的图片抓取任务数量是十分巨大的,通常一天要抓取数以亿计的图片。这对图片服务器的抓取、调度提出了挑战。现有技术中,图片服务器接收抓取请求,生成抓取任务,多个服务器之间,以及服务器内部进程之间的任务分发都缺乏调度,个别图片抓取任务的等待时间过长,导致图片抓取的效率低下。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的图片抓取方法和系统。
根据本发明的一个方面,提供了一种图片抓取方法,包括:多个任务服务器的数据接口接收图片抓取请求;多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务;调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列;调度服务器按预设的规则从任务总队列中取出图片抓取任务,分发给多个任务服务器;多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
根据本发明的另一方面,提供了一种图片抓取系统,包括:包括调度服务器和多个任务服务器;
其中,任务服务器包括:数据接口模块,用于接收图片抓取请求;任务模块,用于根据接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务;抓取模块,用于根据调度服务器分发的图片抓取任务,对图片进行抓取;
调度服务器包括:队列模块,用于从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;调度模块,用于按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
根据本发明的图片抓取方法和系统,多个任务服务器各自接收图片抓取请求,并生成图片抓取任务,调度服务器将各任务服务器中的图片抓取任务生成任务总队列,之后按照预设的规则将所述任务总队列中的图片抓取任务在分发给多个任务服务器。根据该方案,将不同任务服务器接收的图片抓取任务进行统一的调度,这能够均衡多个任务服务器上的抓取任务,充分利用了系统资源,避免将图片抓取任务分发至需要等待的任务服务器中,避免了图片抓取任务搁置或延迟处理,提高了抓取效率,减少了等待时间。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的图片抓取方法的流程图;
图2示出了根据本发明另一个实施例的图片抓取方法的流程图;
图3示出了根据本发明另一个实施例的图片抓取方法的流程图;
图4示出了根据本发明一个实施例的图片抓取系统的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的图片抓取方法的流程图,如图1所示,该方法包括如下步骤:
步骤S110,多个任务服务器的数据接口接收图片抓取请求。
图片抓取请求中包括待抓取图片的信息,例如,待抓取图片的URL地址等。多个任务服务器之间使用各自的数据接口并行地接收图片抓取请求,与统一接口接收图片抓取请求相比,这种并行接收具有较高的容错率,当某一任务服务器的数据接口不可用时,可由其他任务服务器接收请求。
步骤S120,多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务。
一个图片抓取请求中可能生成多个图片抓取任务,例如,图片处理请求中包含一个或多个待抓取的图片的URL地址,则每个图片的URL对应于一个图片抓取任务。
可将生成的图片抓取任务存储在一个任务子队列中。该任务子队列可以是一个常驻的内存队列。例如,该任务子队列可以使用redis实现。redis是一个key-value结构的存储系统,redis支持存储的value类型相对较多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)等。任务队列用于保存待处理的图片抓取任务。还可以将任务子队列在磁盘上做持久化,则当任务服务器发生断电、重启时,待处理的任务也不会丢失。
步骤S130,调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列。
调度服务器将多个任务服务器生成的任务子队列进行整合,形成任务总队列,例如,将不同任务服务器的数据接口接收的图片抓取请求按接收时间添加到任务总队列中,采用先进先出的方式从任务总队列中取出图片抓取任务。
步骤S140,调度服务器从任务总队列中取出图片抓取任务,按预设的规则分发给多个任务服务器。
预设规则可以是根据各个任务服务器的空闲状态,任务数量,处理速度等选定一台任务服务器,向其分发一个或多个图片抓取任务。例如,优先将图片抓取任务分发给进程数量最少的任务服务器。
通过该步骤,任务服务器上生成的图片抓取任务被调度服务器重新分发。当该任务服务器无法立即执行根据接收的图片抓取请求生成的图片抓取任务时,该图片抓取任务可被分发至其他任务服务器上执行,因此提高了系统的抓取效率,减少了等待时间。
步骤S150,多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
多个任务服务器根据图片抓取任务中的URL地址异步抓取相应的图片。
根据本发明上述实施例提供的方法,多个任务服务器各自接收图片抓取请求,并生成图片抓取任务,调度服务器将多个任务服务器中的图片抓取任务整合为任务总队列,之后按照预设的规则将所述任务总队列中的图片抓取任务在分发给多个任务服务器。根据该方案,对不同任务服务器接收的图片抓取任务进行统一的调度,这能够均衡多个任务服务器上的抓取任务,充分利用了系统资源,避免将图片抓取任务分发至需要等待的任务服务器中,避免了图片抓取任务搁置或延迟处理,提高了抓取效率,减少了等待时间。
图2示出了根据本发明另一个实施例的图片抓取方法的流程图,如图2所示,该方法包括如下步骤:
步骤S210,多个任务服务器的数据接口接收图片抓取请求。
步骤S220,多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务。
步骤S210-S220的具体实施方式可参见上一实施例,此处不再赘述。
步骤S230,多个任务服务器对生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
具体地,可以包括对图片抓取任务进行校验等,例如,一些图片抓取任务信息不全,或者其中包含的URL无效,包含重复的URL等,在该步骤中,将符合上述情况的图片抓取任务清除。
步骤S240,调度服务器获取图片抓取任务,存储为任务总队列。
在本实施例中,调度服务器获取的图片抓取任务除了来自任务服务器外,还包括后续的步骤S2100中重复生成的图片抓取任务,按照时间顺序或任务权重等方式添加到任务总队列中。
步骤S250,调度服务器根据任务服务器的空闲信息,从任务总队列中取出图片抓取任务,向任务服务器分发。
具体地,调度服务器根据任务服务器的进程数、最大预设进程数、线程数以及最大预设线程数得出任务服务器的空闲信息。
例如,多个任务服务器的最大预设进程数不同,则空闲信息可以是进程数与最大预设进程数之差等。
根据空闲信息进行任务分发可以包括:将图片抓取任务分发给当前进程数最少的任务服务器;当前进程数相同时,分发给总线程数最少的任务服务器等。上述分发方式仅为示例,可根据需要采用其他方式。
步骤S260,多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
步骤S270,任务服务器对图片进行抓取之后,产生状态信息,并将状态信息返回至调度服务器,若状态信息为抓取成功,执行步骤S280,若状态信息为抓取失败,执行步骤S290。
调度服务器根据反馈的不同状态信息,执行相应的动作。状态信息可由一组状态码表示,例如,抓取成功的状态码为200,重试状态码为0等。
步骤S280,调度服务器向请求方返回抓取成功的消息,执行步骤S2120。
可通过任务服务器的数据接口向请求方返回抓取成功地消息。
步骤S290,统计抓取失败的次数,将抓取失败次数与预设阈值相比较,若抓取失败次数小于预设阈值,执行步骤S2100,否则执行步骤S2110。
例如,预设阈值为3,即抓取失败的限制次数为3次,这有利于提高图片抓取的成功率。
步骤S2100,重复生成对应的图片抓取任务,将重复生成的图片抓取任务加入任务总队列中。
步骤S2110,向请求方返回失败消息。
通过任务服务器的数据接口返回失败消息。
步骤S2120,对抓取的图片进行处理,并对处理后的图片进行消重存储。
任务服务器可能对抓取的部分图片进行处理,包括:图像的裁剪,缩放等。
可选地,在对图片进行处理时,也可以与图片抓取过程中类似地,根据图片处理请求生成处理在任务服务器上生成处理任务的子队列,然后交由调度服务器统一分发。
多个任务服务器处理后的图片由消重存储器消重处理后统一存储。对于不需处理的图片,任务处理器抓取成功后可直接进行消重存储。
根据本发明上述实施例提供的方法,调度服务器根据多个任务服务器的进程、线程状态,得出任务服务器的空闲信息,根据空闲信息进行抓取任务分发,还包含非法任务过滤的步骤,进一步提高了效率,抓取失败时,进行一定次数的重试,提高了抓取的成功率。
图3示出了根据本发明另一个实施例的图片抓取方法的流程图,该实施例具体描述了抓取任务分发至任务服务器后,任务服务器对抓取任务的执行过程,如图3所示,该方法包括如下步骤:
步骤S310,多个任务服务器的数据接口接收图片抓取请求。
步骤S320,多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务。
步骤S330,调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列。
步骤S340,调度服务器按预设的规则从任务总队列中取出图片抓取任务,分发给多个任务服务器。
步骤S310-S330的具体实施方式可参见前一实施例,此处不再赘述。
步骤S350,任务服务器启动主进程。
任务服务器通过主进程将图片抓取任务分发至主进程下的子进程,子进程对每个图片抓取任务生成一个线程,通过线程对图片进行抓取。
步骤S360,主进程判断是否存在线程数小于预设最大线程数的子进程,若存在线程数小于预设最大线程数的子进程,执行步骤S370,否则执行步骤S380。
主进程下可以有多个子进程,每个子进程有承载的最大任务数量的限制,通常,该最大任务数量就是子进程下的最大线程数。该最大线程数根据服务器性能及实际需要预先设定。某一时刻的一个任务服务器中,可能在一部分子进程中,正在执行图片抓取任务的线程数达到了预设的最大线程数,另一部分子进程未达到该预设最大线程数或未处理图片抓取任务,主进程可以优先将图片抓取任务分发至处于空闲状态的子进程。
步骤S370,将图片抓取任务分发给线程数小于预设最大线程数的子进程。
每个子进程当前正在执行的图片抓取任务的线程数是不同的,主进程进行图片抓取任务分发时,需要根据每个子进程正在执行的图片抓取的线程数进行分发。例如,在本发明实施例中,可以将最大线程数设置为10,当一个子进程中正在执行图片抓取任务的线程数达到10时,主进程不再向这个子进程中分发图片抓取任务。当一个子进程中正在执行图片抓取任务的数量未达到10时,主进程则可以选择向这个子进程中分发图片抓取任务。
当有多个子进程下的线程数小于预设最大线程数时,主进程可进一步采用多种方式分发图片抓取任务,例如,将图片抓取任务分发给当前线程数最少的子进程,或者随机分发给任一个当前线程数小于预设最大线程数的子进程。
在本发明实施例中,多个子进程可以同时进行图片抓取任务。可选地,子进程可以通过异步非阻塞I/O模型进行带抓取图片的异步抓取,其中I/O是指Input/Output,即输入输出端口。异步非阻塞I/O模型是一种任务处理与I/O重叠进行的模型,即:在一个子进程中,利用计算机处理速度与I/O速度之间的差异,对计算操作和I/O处理进行重叠处理,使一个子进程可以同时执行多个I/O请求。
步骤S380,判断子进程的数量是否小于预设最大子进程数,如果小于,执行步骤S390。
当主进程下的当前所有子进程中的线程数都已达到预设最大线程数时,任务服务器进一步检查子进程数量是否到达预设最大子进程数。预设最大子进程数的确定可参考服务器的CPU核数,例如,在16核的服务器上,预设最大子进程数为16。
步骤S390,新建一个子进程,将图片抓取任务分发至新建的子进程。
任务服务器中的子进程数未达到预设最大子进程数时,主进程新建一个子进程,将图片抓取任务分发至所述新建的子进程。
需要说明的是,新建子进程的条件不仅限于主进程下的所有子进程中的当前线程数均达到预设最大线程数。当线程数小于最大预设线程数时,也可以根据用户需要,新建一个子进程,将图片抓取任务分发至新建的子进程。
根据本发明上述实施例提供的方法,主进程将图片抓取任务按照子进程及线程的状态进行分发,避免了将图片抓取任务分发至已达到最大抓取任务限制的子进程中,而造成的图片抓取任务搁置或延迟处理的问题,提高了图片抓取的效率。子进程通过异步抓取机制完成待抓取图片的异步抓取,可以同时执行多个I/O请求,提高了图片抓取的效率。
图4示出了根据本发明一个实施例的图片抓取系统的结构框图,如图4所示,该系统包括:
调度服务器42和多个任务服务器41,图4中仅示出了其中一个任务服务器,任务服务器41包括:
数据接口410,用于接收图片抓取请求。
任务模块411,用于根据接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务。
一个图片抓取请求中可能生成多个图片抓取任务,例如,图片处理请求中包含一个或多个待抓取的图片的URL地址,任务模块411为每个图片的URL生成一个图片抓取任务。
可选地,任务模块411将生成的图片抓取任务存储在一个任务子队列中。该任务子队列可以是一个常驻的内存队列。例如,该任务队列可以使用redis实现。还可以将任务子队列在磁盘上做持久化,则当任务服务器发生断电、重启时,待处理的任务也不会丢失。
抓取模块412,用于根据调度服务器分发的图片抓取任务,对图片进行抓取。
可选地,抓取模块412进一步包括:主进程单元4121和子进程单元4122,其中,主进程单元4121用于启动主进程,主进程将图片抓取任务进一步分发至主进程下的子进程,子进程单元4122用于通过子进程对每个图片抓取任务生成一个线程,利用线程对图片进行抓取。
可选地,抓取模块412进一步包括:判断单元4123和建立单元4124,其中,判断单元4123用于判断是否存在线程数小于预设最大线程数的子进程。主进程单元4121具体用于:当存在线程数小于预设最大线程数的子进程时,将图片抓取任务分发给该线程数小于预设最大线程数的子进程。
判断单元4123进一步用于当不存在线程数小于预设最大线程数的子进程时,判断子进程的数量是否小于最大子进程数。
建立单元4124用于当子进程的数量小于最大子进程数时,新建一个子进程。
建立单元4124新建子进程的条件不仅限于主进程下的所有子进程中的当前线程数均达到预设最大线程数。当线程数小于最大预设线程数时,建立单元4124也可以选择新建一个子进程,将图片抓取任务分发至新建的子进程。
主进程单元4121还用于:当子进程的数量小于最大子进程数时,将图片抓取任务分发至新建的子进程。
可选地,任务服务器41还包括:过滤模块413,用于对任务模块411生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
具体地,过滤模块413可用于对图片抓取任务进行校验等,例如,一些图片抓取任务信息不全,或者其中包含的URL无效,包含重复的URL等,过滤模块413将符合上述情况的图片抓取任务清除。
调度服务器42包括:
队列模块421,用于从多个任务服务器41中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列。
队列模块421将多个任务服务器41生成的任务子队列进行整合,形成任务总队列,例如,将不同任务服务器41的数据接口接收的图片抓取请求按接收时间添加到任务总队列中。
调度模块422,用于按预设的规则从任务总队列中取出图片抓取任务,分发给多个任务服务器41。
其中,预设规则可以是根据各个任务服务器的空闲状态,任务数量,处理速度等选定一台任务服务器,向其分发一个或多个图片抓取任务。例如,优先将图片抓取任务分发给进程数量最少的任务服务器。
任务服务器41上生成的图片抓取任务被调度模块422重新分发。当该任务服务器41无法立即执行根据接收的图片抓取请求生成的图片抓取任务时,该图片抓取任务可被分发至其他任务服务器上执行,因此提高了系统的抓取效率,减少了等待时间。
调度模块422具体用于:根据任务服务器41的进程数、最大预设进程数、线程数以及最大预设线程数得出任务服务器41的空闲信息;并根据空闲信息,从任务总队列中取出图片抓取任务,分发给多个任务服务器41。例如,将图片抓取任务分发给当前进程数最少的任务服务器;当前进程数相同时,分发给总线程数最少的任务服务器等。
可选地,任务服务器41中,子进程单元4122还可以在对图片进行抓取之后,产生状态信息,将状态信息返回至调度模块422,相应地,调度模块422还用于根据状态信息,执行预设的动作。
具体地,当状态信息为抓取成功时,调度模块422向请求方返回抓取成功的消息;当状态信息为抓取失败时,调度模块422重新将对应的图片抓取任务放入任务总队列中。
当状态信息为抓取失败时,调度模块422还可以进一步统计抓取失败的次数,当抓取失败的次数小于预设阈值时,重复生成对应的图片抓取任务并放入任务总队列中。否则,向请求方返回失败消息。例如,预设阈值为3,及抓取失败的限制次数为3。
可选地,任务服务器41还包括:处理模块414,用于对抓取的图片进行处理。处理包括:图像的裁剪,缩放等。
可选地,图片抓取系统进一步包括:消重存储器43,用于对抓取模块412抓取的图片和/或处理模块414处理后的图片进行消重存储。
根据本发明上述实施例提供的图片抓取系统,多个任务服务器各自接收图片抓取请求,并生成图片抓取任务,交由调度服务器进行分发。调度服务器将多个任务服务器中的图片抓取任务整合为任务总队列,然后,根据多个任务服务器的空闲信息进行抓取任务分发。均衡多个任务服务器上的抓取任务,充分利用了系统资源。并通过过滤模块,失败重试等,提高了抓取效率及成功率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的图片抓取系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:
A1、一种图片抓取的方法,包括:
多个任务服务器的数据接口接收图片抓取请求;
所述多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务;
调度服务器从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;
调度服务器从所述任务总队列中取出图片抓取任务,按预设的规则分发给所述多个任务服务器;
所述多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
A2、根据A1所述的方法,在所述调度服务器从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列之前,还包括:所述多个任务服务器对所述生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
A3、根据A1或A2所述的方法,所述任务处理器根据分发的图片抓取任务,进行图片抓取具体包括:
启动主进程,所述主进程将图片抓取任务进一步分发至主进程下的子进程;
所述子进程对每个图片抓取任务生成一个线程,所述线程对图片进行抓取。
A4、根据A3所述的方法,所述主进程将图片抓取任务进一步分发至主进程下的子进程具体包括:
判断是否存在线程数小于预设最大线程数的子进程;
若存在线程数小于预设最大线程数的子进程,则将图片抓取任务分发给该线程数小于预设最大线程数的子进程;
若不存在线程数小于预设最大线程数的子进程,则判断子进程的数量是否小于最大子进程数;
若子进程的数量小于最大子进程数,则新建一个子进程,将所述图片抓取任务分发至所述新建的子进程。
A5、根据A1-A4任一项所述的方法,所述调度服务器按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器具体包括:
根据所述任务服务器的进程数、最大预设进程数、线程数以及最大预设线程数中的一项或多项得出所述任务服务器的空闲信息;
根据所述空闲信息,从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
A6、根据A1-A5任一项所述的方法,还包括:
所述任务服务器对图片进行抓取之后,产生状态信息,所述任务服务器将状态信息返回至所述调度服务器;
所述调度服务器根据所述状态信息,执行预设的动作。
A7、根据A6所述的方法,所述调度服务器根据所述状态信息,执行预设的动作包括:
所述状态信息为抓取成功,所述调度服务器向请求方返回抓取成功的消息;
所述状态信息为抓取失败,所述调度服务器重新将对应的图片抓取任务放入任务总队列中。
A8、根据A7所述的方法,所述根据状态信息,执行预设的动作还包括:
统计抓取失败的次数,当所述抓取失败的次数小于预设阈值时,重复生成对应的图片抓取任务,否则,向请求方返回失败消息。
A9、根据A1-A8任一项所述的方法,所述任务服务器对图片进行抓取之后还包括:对抓取的图片进行处理;
消重存储器对多个任务服务器抓取和/或处理后的图片统一进行消重存储。
B10、一种图片抓取系统,包括调度服务器和多个任务服务器,其中,所述任务服务器包括:
数据接口,用于接收图片抓取请求;
任务模块,用于根据接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务;
抓取模块,用于根据所述调度服务器分发的图片抓取任务,对图片进行抓取;
所述调度服务器包括:
队列模块,用于从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;
调度模块,用于按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
B11、根据B10所述的系统,所述任务服务器还包括:过滤模块,用于对所述任务模块生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
B12、根据B10或B11所述的系统,所述抓取模块进一步包括:
主进程单元,用于启动主进程,所述主进程将图片抓取任务进一步分发至主进程下的子进程;
子进程单元,用于通过子进程对每个图片抓取任务生成一个线程,利用所述线程对图片进行抓取。
B13、根据B12所述的系统,所述抓取模块进一步包括:判断单元和建立单元;
所述判断单元用于判断是否存在线程数小于预设最大线程数的子进程;
所述主进程单元具体用于:当存在线程数小于预设最大线程数的子进程时,将图片抓取任务分发给该线程数小于预设最大线程数的子进程;
所述判断单元进一步用于:当不存在线程数小于预设最大线程数的子进程时,判断子进程的数量是否小于最大子进程数;
所述建立单元用于当子进程的数量小于最大子进程数时,新建一个子进程;
所述主进程单元还用于:当子进程的数量小于最大子进程数时,将所述图片抓取任务分发至所述新建的子进程。
B14、根据B10-B13任一项所述的系统,所述调度模块具体用于:根据所述任务服务器的进程数、最大预设进程数、线程数以及最大预设线程数中的一项或多项得出所述任务服务器的空闲信息;以及,根据所述空闲信息,从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
B15、根据B10-B14任一项所述的系统,所述子进程单元进一步用于:在对图片进行抓取之后,产生状态信息,将状态信息返回至所述调度模块;
所述调度模块还用于:根据所述状态信息,执行预设的动作。
B16、根据B15所述的系统,所述调度模块具体用于:当所述状态信息为抓取成功时,向请求方返回抓取成功的消息;当所述状态信息为抓取失败时,重新将对应的图片抓取任务放入任务总队列中。
B17、根据B16所述的系统,所述调度模块进一步用于:
统计抓取失败的次数,当所述抓取失败的次数小于预设阈值时,重复生成对应的图片抓取任务,否则,向请求方返回失败消息。
B18、根据B10-B17任一项所述的系统,所述任务服务器还包括:
处理模块,用于对抓取的图片进行处理;
所述系统进一步包括:消重存储器,用于对所述抓取模块抓取的图片和/或所述处理模块处理后的图片进行消重存储。

Claims (10)

1.一种图片抓取的方法,包括:
多个任务服务器的数据接口接收图片抓取请求;
所述多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务;
调度服务器从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;
调度服务器从所述任务总队列中取出图片抓取任务,按预设的规则分发给所述多个任务服务器;
所述多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
2.根据权利要求1所述的方法,在所述调度服务器从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列之前,还包括:所述多个任务服务器对所述生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
3.根据权利要求1或2所述的方法,所述任务处理器根据分发的图片抓取任务,进行图片抓取具体包括:
启动主进程,所述主进程将图片抓取任务进一步分发至主进程下的子进程;
所述子进程对每个图片抓取任务生成一个线程,所述线程对图片进行抓取。
4.根据权利要求3所述的方法,所述主进程将图片抓取任务进一步分发至主进程下的子进程具体包括:
判断是否存在线程数小于预设最大线程数的子进程;
若存在线程数小于预设最大线程数的子进程,则将图片抓取任务分发给该线程数小于预设最大线程数的子进程;
若不存在线程数小于预设最大线程数的子进程,则判断子进程的数量是否小于最大子进程数;
若子进程的数量小于最大子进程数,则新建一个子进程,将所述图片抓取任务分发至所述新建的子进程。
5.根据权利要求1-4任一项所述的方法,所述调度服务器按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器具体包括:
根据所述任务服务器的进程数、最大预设进程数、线程数以及最大预设线程数中的一项或多项得出所述任务服务器的空闲信息;
根据所述空闲信息,从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
6.根据权利要求1-5任一项所述的方法,还包括:
所述任务服务器对图片进行抓取之后,产生状态信息,所述任务服务器将状态信息返回至所述调度服务器;
所述调度服务器根据所述状态信息,执行预设的动作。
7.根据权利要求6所述的方法,所述调度服务器根据所述状态信息,执行预设的动作包括:
所述状态信息为抓取成功,所述调度服务器向请求方返回抓取成功的消息;
所述状态信息为抓取失败,所述调度服务器重新将对应的图片抓取任务放入任务总队列中。
8.根据权利要求7所述的方法,所述根据状态信息,执行预设的动作还包括:
统计抓取失败的次数,当所述抓取失败的次数小于预设阈值时,重复生成对应的图片抓取任务,否则,向请求方返回失败消息。
9.根据权利要求1-8任一项所述的方法,所述任务服务器对图片进行抓取之后还包括:对抓取的图片进行处理;
消重存储器对多个任务服务器抓取和/或处理后的图片统一进行消重存储。
10.一种图片抓取系统,包括调度服务器和多个任务服务器,其中,所述任务服务器包括:
数据接口,用于接收图片抓取请求;
任务模块,用于根据接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务;
抓取模块,用于根据所述调度服务器分发的图片抓取任务,对图片进行抓取;
所述调度服务器包括:
队列模块,用于从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;
调度模块,用于按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
CN201410209007.4A 2014-05-16 2014-05-16 图片抓取方法和系统 Pending CN105095299A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410209007.4A CN105095299A (zh) 2014-05-16 2014-05-16 图片抓取方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410209007.4A CN105095299A (zh) 2014-05-16 2014-05-16 图片抓取方法和系统

Publications (1)

Publication Number Publication Date
CN105095299A true CN105095299A (zh) 2015-11-25

Family

ID=54575749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410209007.4A Pending CN105095299A (zh) 2014-05-16 2014-05-16 图片抓取方法和系统

Country Status (1)

Country Link
CN (1) CN105095299A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107635000A (zh) * 2017-09-18 2018-01-26 北京潘达互娱科技有限公司 一种图片抓取方法及装置
CN107783827A (zh) * 2016-08-31 2018-03-09 北京国双科技有限公司 异步任务处理方法及装置
CN108776934A (zh) * 2018-05-15 2018-11-09 中国平安人寿保险股份有限公司 分布式数据计算方法、装置、计算机设备及可读存储介质
CN108900865A (zh) * 2018-06-11 2018-11-27 网宿科技股份有限公司 服务器、转码任务的调度方法及执行方法
CN109684064A (zh) * 2018-12-26 2019-04-26 亚信科技(中国)有限公司 一种任务调度方法及任务调度设备
CN110309391A (zh) * 2018-03-21 2019-10-08 腾讯科技(深圳)有限公司 内容抓取任务的调度、处理方法、装置、存储介质和设备
CN112181662A (zh) * 2020-10-13 2021-01-05 深圳壹账通智能科技有限公司 任务调度方法、装置、电子设备及存储介质
CN114401263A (zh) * 2022-01-21 2022-04-26 中兴飞流信息科技有限公司 基于微服务实现的图片etl接入弹性处理分析方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737738A (en) * 1992-12-04 1998-04-07 International Business Machines Corporation Distributed read/write replication with primary copy first write and primary copy transfer features
CN101004743A (zh) * 2006-01-21 2007-07-25 鸿富锦精密工业(深圳)有限公司 分布式文档转换系统及方法
CN102236867A (zh) * 2011-08-15 2011-11-09 悠易互通(北京)广告有限公司 基于云计算的受众行为分析广告定向系统
CN103037010A (zh) * 2012-12-26 2013-04-10 人民搜索网络股份公司 一种分布式网络爬虫系统及其抓取方法
CN103559219A (zh) * 2013-10-18 2014-02-05 北京京东尚科信息技术有限公司 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点
CN103559239A (zh) * 2013-10-25 2014-02-05 北京奇虎科技有限公司 图片的处理方法及系统和任务服务器
CN103634352A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 图片上传方法和系统、客户端
CN103645939A (zh) * 2013-11-29 2014-03-19 北京奇虎科技有限公司 一种图片抓取的方法和系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737738A (en) * 1992-12-04 1998-04-07 International Business Machines Corporation Distributed read/write replication with primary copy first write and primary copy transfer features
CN101004743A (zh) * 2006-01-21 2007-07-25 鸿富锦精密工业(深圳)有限公司 分布式文档转换系统及方法
CN102236867A (zh) * 2011-08-15 2011-11-09 悠易互通(北京)广告有限公司 基于云计算的受众行为分析广告定向系统
CN103634352A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 图片上传方法和系统、客户端
CN103037010A (zh) * 2012-12-26 2013-04-10 人民搜索网络股份公司 一种分布式网络爬虫系统及其抓取方法
CN103559219A (zh) * 2013-10-18 2014-02-05 北京京东尚科信息技术有限公司 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点
CN103559239A (zh) * 2013-10-25 2014-02-05 北京奇虎科技有限公司 图片的处理方法及系统和任务服务器
CN103645939A (zh) * 2013-11-29 2014-03-19 北京奇虎科技有限公司 一种图片抓取的方法和系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783827A (zh) * 2016-08-31 2018-03-09 北京国双科技有限公司 异步任务处理方法及装置
CN107783827B (zh) * 2016-08-31 2021-06-08 北京国双科技有限公司 异步任务处理方法及装置
CN107635000A (zh) * 2017-09-18 2018-01-26 北京潘达互娱科技有限公司 一种图片抓取方法及装置
CN110309391A (zh) * 2018-03-21 2019-10-08 腾讯科技(深圳)有限公司 内容抓取任务的调度、处理方法、装置、存储介质和设备
CN108776934A (zh) * 2018-05-15 2018-11-09 中国平安人寿保险股份有限公司 分布式数据计算方法、装置、计算机设备及可读存储介质
CN108900865A (zh) * 2018-06-11 2018-11-27 网宿科技股份有限公司 服务器、转码任务的调度方法及执行方法
CN109684064A (zh) * 2018-12-26 2019-04-26 亚信科技(中国)有限公司 一种任务调度方法及任务调度设备
CN112181662A (zh) * 2020-10-13 2021-01-05 深圳壹账通智能科技有限公司 任务调度方法、装置、电子设备及存储介质
CN114401263A (zh) * 2022-01-21 2022-04-26 中兴飞流信息科技有限公司 基于微服务实现的图片etl接入弹性处理分析方法及系统

Similar Documents

Publication Publication Date Title
CN105095299A (zh) 图片抓取方法和系统
CN108762931A (zh) 基于分布式调度系统的任务调度方法、服务器及存储介质
US20190228303A1 (en) Method and apparatus for scheduling resource for deep learning framework
CN103645939A (zh) 一种图片抓取的方法和系统
US10666758B2 (en) Browser resource pre-pulling method, terminal and storage medium
US9686152B2 (en) Techniques for tracking resource usage statistics per transaction across multiple layers of protocols
US8380680B2 (en) Piecemeal list prefetch
CN104754036A (zh) 一种基于kafka的消息处理系统及处理方法
CN109729106B (zh) 处理计算任务的方法、系统和计算机程序产品
US9424075B1 (en) Dynamic virtual partitioning for delayed queues
CN103207785A (zh) 数据下载请求的处理方法、装置及系统
US20140129624A1 (en) Bt offline data download system and method, and computer storage medium
CN105608159B (zh) 数据缓存的方法和装置
CN109542642A (zh) 一种前端任务处理的方法及装置
CN106034113A (zh) 数据处理方法及装置
CN108900627B (zh) 一种网络请求方法、终端装置及存储介质
CN104461710A (zh) 任务处理方法及装置
CN106484805A (zh) 一种数据导出方法及数据处理系统
CN103116655A (zh) 集群数据查询方法、客户端及系统
CN103699566A (zh) 一种图片实时切图装置及方法
CN103645892A (zh) 一种图片处理方法和系统
CN106897126A (zh) 一种图片抓取方法和服务器
CN109002286A (zh) 基于同步编程的数据异步处理方法及装置
CN106528551A (zh) 申请内存的方法和装置
CN104394095A (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: 20151125

RJ01 Rejection of invention patent application after publication