图片抓取方法和系统的制作方法

文档序号:9375687阅读:497来源:国知局
图片抓取方法和系统的制作方法
【技术领域】
[0001]本发明涉及图片调度技术,具体涉及一种图片抓取方法和系统。
【背景技术】
[0002]在日常生活中,图片抓取技术被越来越广泛的应用。例如:一些电商网站、团购网站、图片网站等很多小型网站,由于受到自身网站服务器性能、网站软件配置等限制,这些小型网站上的图片在展现时速度较慢,而且展现过程也不稳定,这时,上述网站自身的图片存储在第三方的大型的图片服务器上,所述图片服务器对图片进行抓取来解决图片展现速度慢、展现不稳定的问题。又例如:一些图片搜索网站或新闻网站等,通过图片抓取技术来抓取整个互联网上的大部分图片,然后对抓取得到的图片进行分析、过滤,最后进行信息的发布。
[0003]图片服务器要处理的图片抓取任务数量是十分巨大的,通常一天要抓取数以亿计的图片。这对图片服务器的抓取、调度提出了挑战。现有技术中,图片服务器接收抓取请求,生成抓取任务,多个服务器之间,以及服务器内部进程之间的任务分发都缺乏调度,个别图片抓取任务的等待时间过长,导致图片抓取的效率低下。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的图片抓取方法和系统。
[0005]根据本发明的一个方面,提供了一种图片抓取方法,包括:多个任务服务器的数据接口接收图片抓取请求;多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务;调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列;调度服务器按预设的规则从任务总队列中取出图片抓取任务,分发给多个任务服务器;多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
[0006]根据本发明的另一方面,提供了一种图片抓取系统,包括:包括调度服务器和多个任务服务器;
[0007]其中,任务服务器包括:数据接口模块,用于接收图片抓取请求;任务模块,用于根据接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务;抓取模块,用于根据调度服务器分发的图片抓取任务,对图片进行抓取;
[0008]调度服务器包括:队列模块,用于从所述多个任务服务器中获取图片抓取任务,将所述获取的图片抓取任务存储为任务总队列;调度模块,用于按预设的规则从所述任务总队列中取出图片抓取任务,分发给所述多个任务服务器。
[0009]根据本发明的图片抓取方法和系统,多个任务服务器各自接收图片抓取请求,并生成图片抓取任务,调度服务器将各任务服务器中的图片抓取任务生成任务总队列,之后按照预设的规则将所述任务总队列中的图片抓取任务在分发给多个任务服务器。根据该方案,将不同任务服务器接收的图片抓取任务进行统一的调度,这能够均衡多个任务服务器上的抓取任务,充分利用了系统资源,避免将图片抓取任务分发至需要等待的任务服务器中,避免了图片抓取任务搁置或延迟处理,提高了抓取效率,减少了等待时间。
[0010]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0011]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0012]图1示出了根据本发明一个实施例的图片抓取方法的流程图;
[0013]图2示出了根据本发明另一个实施例的图片抓取方法的流程图;
[0014]图3示出了根据本发明另一个实施例的图片抓取方法的流程图;
[0015]图4示出了根据本发明一个实施例的图片抓取系统的结构框图。
【具体实施方式】
[0016]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0017]图1示出了根据本发明一个实施例的图片抓取方法的流程图,如图1所示,该方法包括如下步骤:
[0018]步骤S110,多个任务服务器的数据接口接收图片抓取请求。
[0019]图片抓取请求中包括待抓取图片的信息,例如,待抓取图片的URL地址等。多个任务服务器之间使用各自的数据接口并行地接收图片抓取请求,与统一接口接收图片抓取请求相比,这种并行接收具有较高的容错率,当某一任务服务器的数据接口不可用时,可由其他任务服务器接收请求。
[0020]步骤S120,多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储图片抓取任务。
[0021]一个图片抓取请求中可能生成多个图片抓取任务,例如,图片处理请求中包含一个或多个待抓取的图片的URL地址,则每个图片的URL对应于一个图片抓取任务。
[0022]可将生成的图片抓取任务存储在一个任务子队列中。该任务子队列可以是一个常驻的内存队列。例如,该任务子队列可以使用redis实现。redis是一个key-value结构的存储系统,redis支持存储的value类型相对较多,包括string(字符串)、list (链表)、set (集合)、zset (sorted set—有序集合)和hash (哈希类型)等。任务队列用于保存待处理的图片抓取任务。还可以将任务子队列在磁盘上做持久化,则当任务服务器发生断电、重启时,待处理的任务也不会丢失。
[0023]步骤S130,调度服务器从多个任务服务器中获取图片抓取任务,将获取的图片抓取任务存储为任务总队列。
[0024]调度服务器将多个任务服务器生成的任务子队列进行整合,形成任务总队列,例如,将不同任务服务器的数据接口接收的图片抓取请求按接收时间添加到任务总队列中,采用先进先出的方式从任务总队列中取出图片抓取任务。
[0025]步骤S140,调度服务器从任务总队列中取出图片抓取任务,按预设的规则分发给多个任务服务器。
[0026]预设规则可以是根据各个任务服务器的空闲状态,任务数量,处理速度等选定一台任务服务器,向其分发一个或多个图片抓取任务。例如,优先将图片抓取任务分发给进程数量最少的任务服务器。
[0027]通过该步骤,任务服务器上生成的图片抓取任务被调度服务器重新分发。当该任务服务器无法立即执行根据接收的图片抓取请求生成的图片抓取任务时,该图片抓取任务可被分发至其他任务服务器上执行,因此提高了系统的抓取效率,减少了等待时间。
[0028]步骤S150,多个任务服务器根据分发的图片抓取任务,对图片进行抓取。
[0029]多个任务服务器根据图片抓取任务中的URL地址异步抓取相应的图片。
[0030]根据本发明上述实施例提供的方法,多个任务服务器各自接收图片抓取请求,并生成图片抓取任务,调度服务器将多个任务服务器中的图片抓取任务整合为任务总队列,之后按照预设的规则将所述任务总队列中的图片抓取任务在分发给多个任务服务器。根据该方案,对不同任务服务器接收的图片抓取任务进行统一的调度,这能够均衡多个任务服务器上的抓取任务,充分利用了系统资源,避免将图片抓取任务分发至需要等待的任务服务器中,避免了图片抓取任务搁置或延迟处理,提高了抓取效率,减少了等待时间。
[0031]图2示出了根据本发明另一个实施例的图片抓取方法的流程图,如图2所示,该方法包括如下步骤:
[0032]步骤S210,多个任务服务器的数据接口接收图片抓取请求。
[0033]步骤S220,多个任务服务器分别根据各自接收的图片抓取请求生成图片抓取任务,并存储所述图片抓取任务。
[0034]步骤S210-S220的【具体实施方式】可参见上一实施例,此处不再赘述。
[0035]步骤S230,多个任务服务器对生成的图片抓取任务进行过滤,清除已完成任务和非法任务。
[0036]具体地,可以包括对图片抓取任务进行校验等,例如,一些图片抓取任务信息不全,或者其中包含的URL无效,包含重复的URL等,在该步骤中,将符合上述情况的图片抓取任务清除。
[0037]步骤S240,调度服务器获取图片抓取任务,存储为任务总队列。
[0038]在本实施例中,调度服务器获取的图片抓取任务除了来自任务服务器外,还包括后续的步骤S2100中重复生成的图片抓取任务,按照时间顺序或任务权重等方式添加到任务总队列中。
[0039]步骤S250,调度服务器根据任务服务器的空闲信息,从任务总队列中取出图片抓取任务,向任务服务器分发。
[0040]具体地,调度服务器根据任务服务器的进程数、最大预设进程数、线程数以及最大预设线程数得出任务服务器的空闲信息。
[0041]例如,多个任务服务器的最大预设进程数不同,则空闲信息可以是进程数与最大预设进程数之差等。
[0042]根据空闲信息进行任务分
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1