CN106897126A - 一种图片抓取方法和服务器 - Google Patents

一种图片抓取方法和服务器 Download PDF

Info

Publication number
CN106897126A
CN106897126A CN201510965284.2A CN201510965284A CN106897126A CN 106897126 A CN106897126 A CN 106897126A CN 201510965284 A CN201510965284 A CN 201510965284A CN 106897126 A CN106897126 A CN 106897126A
Authority
CN
China
Prior art keywords
task
picture
crawl
processor
queue
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
CN201510965284.2A
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 CN201510965284.2A priority Critical patent/CN106897126A/zh
Publication of CN106897126A publication Critical patent/CN106897126A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种图片抓取方法和服务器,该方法包括:多个任务处理器接收图片请求消息,并生成相应的图片抓取任务;任务调度器取出图片抓取任务,根据各任务处理器的负载状态分发给多个任务处理器;各任务处理器根据该图片抓取任务中的待抓取图片的标识信息判断该图片抓取任务是否为已完成任务,是则,从历史已抓取图片中获取该图片抓取任务对应的图片,否则,根据该图片抓取任务中的待抓取图片的地址信息抓取该图片抓取任务对应的图片。本方案通过在将图片抓取任务分发给任务处理器之前对任务处理器的状态判断,以及,通过在进行图片抓取之前对图片抓取任务的状态判断,充分利用了***资源,实现了任务处理器之间的负载均衡和任务处理方式的灵活可变。

Description

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

Claims (10)

1.一种图片抓取方法,其中,该方法包括:
多个任务处理器接收图片请求消息,根据各图片请求消息生成相应的图片抓取任务;其中,每个图片抓取任务中包括:待抓取图片的标识信息,待抓取图片的地址信息;
任务调度器将生成的各图片抓取任务存储到第一任务队列中;从第一任务队列中取出图片抓取任务,根据各任务处理器的负载状态分发给多个任务处理器;
各任务处理器对于分发的每个图片抓取任务,根据该图片抓取任务中的待抓取图片的标识信息判断该图片抓取任务是否为已完成任务,是则,从历史已抓取图片中获取该图片抓取任务对应的图片,否则,根据该图片抓取任务中的待抓取图片的地址信息抓取该图片抓取任务对应的图片。
2.如权利要求1所述的方法,其中,该方法进一步包括:
多个任务处理器生成对应于各抓取到的图片的图片处理任务;
任务调度器将生成的各图片处理任务存储到第二任务队列中;从第二任务队列中取出图片处理任务,根据各任务处理器的负载状态分发给多个任务处理器;
多个任务处理器根据分发的图片处理任务对图片进行处理。
3.如权利要求1所述的方法,其中,在任务调度器将生成的各图片抓取任务存储到第一任务队列中之前,该方法进一步包括:
对生成的图片抓取任务进行过滤,清除非法任务和重复任务。
4.如权利要求1所述的方法,其中,该方法进一步包括:
对于每个被抓取到的图片,在存储器和/或内容分发网络中存储该图片,并生成相应的图片状态信息,每条图片状态信息中包括:图片的标识信息,图片的存储地址信息;
将生成的各图片状态信息保存在图片状态数据库中。
5.如权利要求4所述的方法,其中,
所述根据该图片抓取任务中的待抓取图片的标识信息判断该图片抓取任务是否为已完成任务包括:判断该图片抓取任务中的待抓取图片的标识信息是否命中图片状态数据库中的图片的标识信息,是则判断该图片抓取任务是已完成任务;
所述从历史已抓取图片中获取该图片抓取任务对应的图片包括:根据命中的图片的标识信息对应的图片的存储地址信息,获取相应的图片。
6.如权利要求1所述的方法,其中,所述任务调度器将生成的各图片抓取任务存储到第一任务队列中包括:
根据各图片抓取任务的生成顺序、各图片抓取任务对应的图片请求消息的接收顺序、以及各图片抓取任务的任务权重中的一项或多项,将各图片抓取任务按顺序存储到第一任务队列中。
7.如权利要求1所述的方法,其中,所述从第一任务队列中取出图片抓取任务,根据各任务处理器的负载状态分发给多个任务处理器包括:
根据各任务处理器的当前进程数、最大预设进程数、当前线程数、以及最大预设线程数中的一项或多项得出各任务处理器的负载状态;
根据各任务处理器的负载状态,从第一任务队列中取出图片抓取任务,分发给所述多个任务处理器。
8.如权利要求2所述的方法,其中,所述任务调度器将生成的各图片处理任务存储到第二任务队列中包括:
根据各图片处理任务的生成顺序、各图片处理任务对应的图片的抓取顺序、以及各图片处理任务的任务权重中的一项或多项,将各图片处理任务按顺序存储到第二任务队列中。
9.如权利要求2所述的方法,其中,所述从第二任务队列中取出图片处理任务,根据各任务处理器的负载状态分发给多个任务处理器包括:
根据各任务处理器的当前进程数、最大预设进程数、当前线程数、以及最大预设线程数中的一项或多项得出各任务处理器的负载状态;
根据各任务处理器的负载状态,从第二任务队列中取出图片处理任务,分发给所述多个任务处理器。
10.一种图片抓取服务器,其中,该服务器包括:
任务处理器,适于接收图片请求消息,根据各图片请求消息生成相应的图片抓取任务;其中,每个图片抓取任务中包括:待抓取图片的标识信息,待抓取图片的地址信息;
任务调度器,适于将生成的各图片抓取任务存储到第一任务队列中;从第一任务队列中取出图片抓取任务,根据各任务处理器的负载状态分发给多个任务处理器;
任务处理器,适于对于分发的每个图片抓取任务,根据该图片抓取任务中的待抓取图片的标识信息判断该图片抓取任务是否为已完成任务,是则,从历史已抓取图片中获取该图片抓取任务对应的图片,否则,根据该图片抓取任务中的待抓取图片的地址信息抓取该图片抓取任务对应的图片。
CN201510965284.2A 2015-12-21 2015-12-21 一种图片抓取方法和服务器 Pending CN106897126A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510965284.2A CN106897126A (zh) 2015-12-21 2015-12-21 一种图片抓取方法和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510965284.2A CN106897126A (zh) 2015-12-21 2015-12-21 一种图片抓取方法和服务器

Publications (1)

Publication Number Publication Date
CN106897126A true CN106897126A (zh) 2017-06-27

Family

ID=59190126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510965284.2A Pending CN106897126A (zh) 2015-12-21 2015-12-21 一种图片抓取方法和服务器

Country Status (1)

Country Link
CN (1) CN106897126A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107608794A (zh) * 2017-09-18 2018-01-19 北京潘达互娱科技有限公司 一种图片处理方法及装置
CN107635000A (zh) * 2017-09-18 2018-01-26 北京潘达互娱科技有限公司 一种图片抓取方法及装置
CN109788325A (zh) * 2018-12-28 2019-05-21 网宿科技股份有限公司 视频任务分配方法及服务器
CN111092921A (zh) * 2018-10-24 2020-05-01 北大方正集团有限公司 数据采集方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178736A (zh) * 2007-12-11 2008-05-14 腾讯科技(深圳)有限公司 网页抓取方法和网页抓取服务器
CN102364461A (zh) * 2011-06-30 2012-02-29 广州市动景计算机科技有限公司 网页内容数据获取方法及服务器
CN103544149A (zh) * 2012-07-09 2014-01-29 百度在线网络技术(北京)有限公司 一种访问图片的方法、***和图片服务器
CN103645939A (zh) * 2013-11-29 2014-03-19 北京奇虎科技有限公司 一种图片抓取的方法和***
CN103902664A (zh) * 2014-03-10 2014-07-02 百度在线网络技术(北京)有限公司 页面中图片的渲染方法及信息的提供方法、装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178736A (zh) * 2007-12-11 2008-05-14 腾讯科技(深圳)有限公司 网页抓取方法和网页抓取服务器
CN102364461A (zh) * 2011-06-30 2012-02-29 广州市动景计算机科技有限公司 网页内容数据获取方法及服务器
CN103544149A (zh) * 2012-07-09 2014-01-29 百度在线网络技术(北京)有限公司 一种访问图片的方法、***和图片服务器
CN103645939A (zh) * 2013-11-29 2014-03-19 北京奇虎科技有限公司 一种图片抓取的方法和***
CN103902664A (zh) * 2014-03-10 2014-07-02 百度在线网络技术(北京)有限公司 页面中图片的渲染方法及信息的提供方法、装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107608794A (zh) * 2017-09-18 2018-01-19 北京潘达互娱科技有限公司 一种图片处理方法及装置
CN107635000A (zh) * 2017-09-18 2018-01-26 北京潘达互娱科技有限公司 一种图片抓取方法及装置
CN111092921A (zh) * 2018-10-24 2020-05-01 北大方正集团有限公司 数据采集方法、装置及存储介质
CN111092921B (zh) * 2018-10-24 2022-05-10 北大方正集团有限公司 数据采集方法、装置及存储介质
CN109788325A (zh) * 2018-12-28 2019-05-21 网宿科技股份有限公司 视频任务分配方法及服务器

Similar Documents

Publication Publication Date Title
CN103645939B (zh) 一种图片抓取的方法和***
CN106897126A (zh) 一种图片抓取方法和服务器
CN106534244B (zh) 一种代理资源的调度方法及装置
CN108875091B (zh) 一种统一管理的分布式网络爬虫***
CN108762931A (zh) 基于分布式调度***的任务调度方法、服务器及存储介质
CN103544324B (zh) 一种内核态的数据访问方法、装置及***
CN103207785B (zh) 数据下载请求的处理方法、装置及***
CN104468174B (zh) 一种集群服务器执行任务的方法和装置
CN105095299A (zh) 图片抓取方法和***
CN104754036A (zh) 一种基于kafka的消息处理***及处理方法
CN109726004B (zh) 一种数据处理方法及装置
CN103391312B (zh) 资源离线下载方法及装置
CN103873597B (zh) 分布式网页下载方法和***
CN103607424B (zh) 一种服务器连接方法及服务器***
CN108121511A (zh) 一种分布式边缘存储***中的数据处理方法、装置及设备
WO2013023306A1 (en) Stream processing using a client-server architecture
CN105516086B (zh) 业务处理方法及装置
CN105589943B (zh) 搜索结果页面的图片适应性处理的方法、装置和服务器
CN113220431B (zh) 跨云的分布式数据任务调度方法、设备及存储介质
CN110928905B (zh) 一种数据处理方法和装置
CN103577251A (zh) 基于事件的互联网计算处理***及方法
CN109597837B (zh) 时序数据的存储方法、查询方法及相关设备
CN107819825A (zh) 一种服务调度方法、装置和电子设备
CN103116655A (zh) 集群数据查询方法、客户端及***
CN103248636B (zh) 离线下载的***及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170627

RJ01 Rejection of invention patent application after publication