CN110020046B - 一种数据抓取方法及装置 - Google Patents
一种数据抓取方法及装置 Download PDFInfo
- Publication number
- CN110020046B CN110020046B CN201710985479.2A CN201710985479A CN110020046B CN 110020046 B CN110020046 B CN 110020046B CN 201710985479 A CN201710985479 A CN 201710985479A CN 110020046 B CN110020046 B CN 110020046B
- Authority
- CN
- China
- Prior art keywords
- queue
- task
- web crawler
- scheduling time
- target website
- 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.)
- Active
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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据抓取方法及装置,其中,所述方法包括:基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;基于所述调度时间对所述任务进行管理;在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。用于解决现有数据抓取效率低,公平性差的技术问题,提高了数据抓取效率,且保证了抓取任务调度的公平性。
Description
技术领域
本发明涉及计算机应用领域与信息技术领域,特别涉及一种数据抓取方法及装置。
背景技术
随着互联网知识数据的***式增长以及大数据技术在互联网和信息行业的飞速发展,人们越来越依赖于网络爬虫来进行互联网数据的抓取。然而,传统的网络爬虫为了尽可能多的获取网站中的高价值信息,会根据特定策略进行大规模的页面访问,不仅给互联网网站的服务器带来额外的负载压力,而且占用了大量的网络带宽,造成网络拥塞,最终导致数据抓取效率的降低。
因此,很多网站为了应对这一问题,对用户的访问频率进行了监测:当一段时间内来自于同一个源地址的请求数过多时,服务器将会限制该地址用户的后续访问。目前,面对因不合理的抓取方式而被限制访问的问题,网络爬虫主要采取使用代理IP和设置数据抓取频率两种方案。也就是说,第一种方案具体为:网络爬虫***先将请求发往代理IP,再由代理IP代为访问目标网站。第二种方案具体为:网络爬虫***通过控制数据抓取频率来实现礼貌抓取。
其中,第一种方案尽管可以避免服务器的对固定IP访问的限制,但是目标网站服务器的负载压力过大的问题并没有得到有效的解决,没有真正地实现礼貌抓取。此外,使用代理IP一方面引入了代理转发的过程,增大了网络负载;另一方面需要额外的时间与资源来判断代理IP的可用性,降低了网络爬虫任务执行成功率。因此,使用代理IP的方法无法应用于面向全网的大规模数据抓取***。
第二种方案尽管能够实现真正意义上的礼貌爬取,但是这种方法是以牺牲网络爬虫的网络IO性能为代价的。在百兆带宽普及的今天,网络带宽已不是网络爬虫的性能瓶颈,而为网络爬虫设置任务执行的频率不能充分地利用现有的带宽资源,无法达到预期的抓取效率。
此外,在现有技术中,除了使用上述提到的两种方案外,还采用将抓取任务随机打乱之后***到待抓取队列中等待抓取。尽管这种做法在避免对同一服务器进程长时间的连续访问的同时保证了网络爬虫的高效。然而,这种做法虽然在一定程度上实现了“礼貌爬取”,但是由于缺少对抓取任务的控制,会引发抓取任务调度中的公平性问题,比如,某些任务很早就加入到待抓取队列,但是却一直未得到调度。
可见,在现有技术中,存在对数据抓取效率低,公平性差的技术问题。
发明内容
本发明实施例提供一种数据抓取方法及装置,用于解决现有数据抓取效率低,公平性差的技术问题,提高了数据抓取效率,且保证了抓取任务调度的公平性。
一方面,本发明实施例提供了一种数据抓取方法,包括:
基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
基于所述调度时间对所述任务进行管理;
在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。
可选地,所述基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间,包括:
基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
基于所述泊松过程模型,生成所述任务对应的调度时间。
可选地,所述基于所述调度时间对所述任务进行管理,包括:
建立包括待抓取队列、结果队列和等待队列的至少三个工作队列;
当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集;
在所述网络爬虫抓取所述第一链接地址集之后,将抓取过程中提取到的子链接地址集***所述结果队列,且将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间。
可选地,所述基于所述调度时间对所述任务进行管理,包括:
获取所述待抓取队列的队列长度;
若所述队列长度小于一预设调度阈值,将所述等待队列的每个链接地址根据优先级由小到大***所述待抓取队列,获得更新后的待抓取队列。
可选地,所述基于所述调度时间对所述任务进行管理,包括:
在接收到所述等待队列的更新请求时,将所述结果队列的每个子链接地址基于对应的服务器地址按照第一预设规则***所述等待队列,并将确定的每个子链接地址对应的调度时间相应的***所述等待队列,获得更新后的等待队列。
可选地,所述基于所述调度时间对所述任务进行管理,包括:
当所述***的当前时间到达所述待抓取队列的队头对应的任务的调度时间时,调度队头对应的任务,将队头对应的任务发送给所述网络爬虫,通过所述网络爬虫在所述目标网站服务器中抓取获得第三链接地址集;
将所述第三链接地址集中每个链接地址基于对应的服务器地址按照第二预设规则***所述结果队列,获得更新后的结果队列。
另一方面,本发明实施例还提供了一种数据抓取装置,包括:
生成模块,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
处理模块,基于所述调度时间对所述任务进行管理;且在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。
可选地,所述生成模块用于:
基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
基于所述泊松过程模型,生成所述任务对应的调度时间。
可选地,所述处理模块用于:
建立包括待抓取队列、结果队列和等待队列的至少三个工作队列;
当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集;
在所述网络爬虫抓取所述第一链接地址集之后,将抓取过程中提取到的子链接地址集***所述结果队列,且将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间。
可选地,所述处理模块用于:
获取所述待抓取队列的队列长度;
若所述队列长度小于一预设调度阈值,将所述等待队列的每个链接地址根据优先级由小到大***所述待抓取队列,获得更新后的待抓取队列。
可选地,所述处理模块用于:
在接收到所述等待队列的更新请求时,将所述结果队列的每个子链接地址基于对应的服务器地址按照第一预设规则***所述等待队列,并将确定的每个子链接地址对应的调度时间相应的***所述等待队列,获得更新后的等待队列。
可选地,所述处理模块用于:
当所述***的当前时间到达所述待抓取队列的队头对应的任务的调度时间时,调度队头对应的任务,将队头对应的任务发送给所述网络爬虫,通过所述网络爬虫在所述目标网站服务器中抓取获得第三链接地址集;
将所述第三链接地址集中每个链接地址基于对应的服务器地址按照第二预设规则***所述结果队列,获得更新后的结果队列。
另一方面,本发明实施例还提供了一种计算机装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据抓取方法的步骤。
另一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据抓取方法的步骤。
本发明实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;基于所述调度时间对所述任务进行管理;在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。也就是说,利用实际场景中用户访问互联网的行为,给抓取任务设置合理的调度时间,进一步地来管理任务,从而保证了数据抓取的效率,且在避免对同一服务器进程长时间的连续访问的同时,保证了任务调度的公平性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例一中提供的一种数据抓取方法的方法流程图;
图2为本发明实施例一中提供的一种数据抓取方法中步骤S101的步骤流程图;
图3为本发明实施例一中提供的一种数据抓取方法中步骤S102的步骤流程图;
图4为本发明实施例一中提供的一种数据抓取方法中同一链接地址在各队列中的存储结构示意图;
图5为本发明实施例一中提供的一种数据抓取方法中步骤S102的步骤流程图;
图6为本发明实施例一中提供的一种数据抓取方法中对待抓取队列更新过程的示意图;
图7为本发明实施例一中提供的一种数据抓取方法中对等待队列更新过程的示意图;
图8为本发明实施例一中提供的一种数据抓取方法中步骤S102的步骤流程图;
图9为本发明实施例一中提供的一种数据抓取方法中对待抓取队列提取过程的示意图;
图10为本发明实施例二中提供的一种数据抓取装置的结构示意图。
具体实施方式
本发明实施例提供一种数据抓取方法及装置,用于解决现有数据抓取效率低,公平性差的技术问题,提高了数据抓取效率,且保证了抓取任务调度的公平性。
本发明实施例中的技术方案为解决上述的技术问题,总体思路如下:
一种数据抓取方法,包括:
基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
基于所述调度时间对所述任务进行管理;
在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。
在本发明实施例的技术方案中,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;基于所述调度时间对所述任务进行管理;在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。也就是说,利用实际场景中用户访问互联网的行为,给抓取任务设置合理的调度时间,进一步地来管理任务,从而保证了数据抓取的效率,且在避免对同一服务器进程长时间的连续访问的同时,保证了任务调度的公平性。
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
实施例一
请参考图1,本发明实施例一提供了一种数据抓取方法,应用于一网络爬虫***,包括:
S101:基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
S102:基于所述调度时间对所述任务进行管理;
S103:在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。
在具体实施过程中,步骤S101至步骤S103的具体实现过程如下:
首先,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间。在实际场景中,用户上网访问互联网数据是有一定的规律性的,具体可以对用户在某一时间段内访问互联网行为进行统计分析,确定用户行为的分布规律。进一步地,根据分布规律生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间,从而实现了网络爬虫对目标网站服务器的访问时间的控制。然后,基于所述调度时间对所述任务进行管理,比如,当***的当前时间到达所述调度时间时,从待抓取任务中选取出所述任务。进一步地,在将所述任务发送给所述网络爬虫后,所述网络爬虫将在所述目标网站服务器中执行所述任务,进行数据抓取。
在本发明实施例中,请参考图2,步骤S101:基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间,包括:
S201:基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
S202:基于所述泊松过程模型,生成所述任务对应的调度时间。
在具体实施过程中,步骤S201至步骤S202的具体实现过程如下:
首先,基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型。所述泊松过程模型具体的建立过程如下:
考虑到用户在某一时间段内对某一服务器的访问,令Ni(t)表示服务器i在(0,t]内收到的来自用户的访问请求数,则计数过程{Ni(t),t≥0}是一个强度为λi的泊松过程。
令Ti1表示第一个访问请求到达服务器i的时刻,Tin表示第n-1个与第n个访问请求到达服务器i的时间间隔,则{Tin,n=1,2,......}为到达时间间隔序列,由于该时间间隔序列为相互独立的随机变量序列,因此,服从均值为1/λi的指数分布,进一步地,可以求出两个访问请求间的时间间隔η。
然后,基于所述泊松过程模型,生成所述任务对应的调度时间。具体来讲,在本发明的实际场景中,已知网络爬虫的平均抓取频率为即单位时间内抓取的页面数量。基于此,λi可通过下式计算可得。其中,N为该网络爬虫待抓取URL(Universal ResourceLocator,统一资源定位符)地址总的数目,ni为N个总任务中对应服务器i的URL地址数目。
针对ni条对应服务器i的URL地址,基于泊松分布模型,确定两条任务间的服从指数分布的时间间隔η=1/λi。当第j+1条URL地址的调度时间为tj+1,以及前一条任务的调度时间为tj时,tj+1=tj+η,也就是说,第j+1条URL地址的调度时间,可通过第j条URL地址的调度时间和二者间的时间间隔η生成。
也就是说,在本发明实施例的技术方案中,通过对用户访问互联网这一行为进行仿真,建立泊松过程模型,进一步地,通过所述泊松过程模型生成网络爬虫访问目标网站服务器的时间间隔,在初始化时间点之后,能够进一步地生成所述网络爬虫对所述目标网站服务器访问的时间节点,进一步地,实现了所述网络爬虫对所述目标网站服务器的访问频率的控制。
在本发明实施例中,请参考图3,步骤S102:基于所述调度时间对所述任务进行管理,包括:
S301:建立包括待抓取队列、结果队列和等待队列的至少三个工作队列;
S302:当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集;
S303:在所述网络爬虫抓取所述第一链接地址集之后,将抓取过程中提取到的子链接地址集***所述结果队列,且将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间。
在具体实施过程中,步骤S301至步骤S303的具体实现过程如下:
首先,建立包括待抓取队列、结果队列和等待队列的至少三个工作队列,每个队列可分别由不同的更新线程进行维护。以所述至少三个工作队列仅包括所述待抓取队列、所述结果队列和所述等待队列为例,可由三个更新线程待抓取队列更新线程tdu1、结果队列更新线程tdu2和等待队列更新线程tdu3分别进行维护。具体来讲,所述待抓取队列保存了需在本轮完成抓取的URL地址集,按照先进先出的方式进行调度;所述结果队列保存了抓取过程中提取到的子链接地址集;所述等待队列则保存了尚未抓取且等待调度的新URL地址集,该队列为优先级队列;在本发明实施例中,同一链接地址Link在各队列中的存储结构如图4所示。具体来讲,所述结果队列不仅保存了抓取过程中提取到的子链接地址集,还保存了与每个子链接地址对应的服务器地址。所述等待队列不仅保存了尚未抓取且等待调度的链接地址集,还保存了与每个链接地址对应的调度时间。在本发明实施例中,链接地址也就是URL地址。
在具体实施过程中,当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集,其中,所述第一链接地址集包括至少一个链接地址。在所述网络爬虫抓取所述第一连接地址集之后,将提取到子链接地址集,然后将抓取过程中提取到的子链接地址集***所述结果队列。同时,将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间,也就是说,所述等待队列为一与调度时间有关的优先级队列。
为避免所述待抓取队列中的元素排队时,由于新生成的任务***队列造成已在任务队列中的某些任务长期得不到执行,本发明实施例中提出包括所述等待队列的多队列机制,保证所有的抓取任务都能在可接受的时间内被执行,有效避免任务调度中“饿死”现象的发生,保证了数据抓取的公平性。
在本发明实施例中,网络爬虫主要包括抓取、更新两类工作线程。其中,抓取线程tdc负责数据采集及子链接提取工作;更新线程tdu则用于对***中的各个工作队列进行管理。
在具体实施过程中,具体可以对所述待抓取队列,所述等待队列及结果队列进行更新,请参考图5,步骤S102:基于所述调度时间对所述任务进行管理,包括:
S401:获取所述待抓取队列的队列长度;
S402:若所述队列长度小于一预设调度阈值,将所述等待队列的每个链接地址根据优先级由小到大***所述待抓取队列,获得更新后的待抓取队列。
在具体实施过程中,步骤S401至步骤S402的具体实现过程如下:
首先,tdu1获取所述待抓取队列长度,若所述队列长度大于预设调度阈值,则经过T(根据所述网络爬虫所在***的性能来进行设置)后,再次检查队列长度,再次检测所述待抓取队列的队列长度,直到所述队列长度小于所述预设调度阈值时,tdu1发出更新请求,暂停对所述等待队列的操作(比如,暂停对所述等待队列的增加或者删除元素的操作);将所述等待队列的现有内容交付给tdu1,清空所述等待队列的内容并进入队列更新过程;然后,tdu1接收到tdu3的反馈结果,将获取的结果按优先级从小到大(其中,调度时间越小优先级越高)***到所述待抓取队列中,本轮更新结束。
以所述待抓取队列为包含Link1在内的队列长度L小于预设调度阈值L0为例,对所述待抓取队列更新过程的整个流程进行说明,具体流程图请参考图6,对所述待抓取队列更新前的所述等待队列为包括Link2,Link3在内链接地址集。当tdu1发出更新请求,tdu3接收到tdu1的更新请求,暂停对等待队列的操作;将所述等待队列的现有的包括Link2,Link3在内链接地址集交付给tdu1,清空所述等待队列的内容并进入队列更新过程,同时,tdu2接收到tdu3更新请求,可以基于包括Link11、Link12、Link21在内的原结果队列对原等待队列进行更新。此外,tdu1接收到tdu3的反馈结果(包括Link2,Link3在内链接地址集),按照优先级从小到大***到所述待抓取队列中,获得更新后的包括Link1、Link3、Link2在内的链接地址集的待抓取队列。此外,在本发明实施例中,当然可以基于同样的发明构思重复进行上述的更新过程。
在本发明实施例中,步骤S102:基于所述调度时间对所述任务进行管理,包括:在接收到所述等待队列的更新请求时,将所述结果队列的每个子链接地址基于对应的服务器地址按照第一预设规则***所述等待队列,并将确定的每个子链接地址对应的调度时间相应的***所述等待队列,获得更新后的等待队列。具体来讲,tdu3向tdu2发送更新请求;tdu2接收到tdu3的更新请求,暂停对结果队列的操作;将所述结果队列的现有内容交付给tdu3,清空所述结果队列的内容并重新开始队列操作;tdu3接收到tdu2的反馈结果集合,集合长度为N,该集合的特征是:对应同一服务器的URL地址连续排列,而不同服务器对应的URL地址块(包括多个链接地址)按随机方式排列;针对结果集合中的第i个URL地址块(i=1,2,......,M),获取其长度为ni,计算该URL地址对应的优先级值(调度时间),***到所述等待队列。
具体的计算过程需基于***已创建的泊松过程模型来计算获得。具体来讲,根据服务时间间隔服从指数分布的特性,产生服从参数为λi的指数分布的随机数Random(Exponential,λi),其中,通过已创建的泊松过程模型可计算获得λi。在具体实施过程中,初始化第一条URL地址对应的抓取任务的调度时间为:t1=Rand(0,1/λi)。相邻两条链接地址的抓取任务对应的调度时间之间的关系为:tj+1=tj+Rand(0,1/λi)。基于该方法,最终将确定出反馈结果集合中每个链接地址对应的抓取任务完成的调度时间。
以所述待抓取队列为包括Link1,……,Link3,Link2在内的队列长度为L的队列为例,对所述等待队列更新过程的整个流程进行说明,具体流程图请参考图7。在tdu3向tdu2发送更新请求之后,tdu2接收到tdu3的更新请求,暂停对原结果队列的任何操作,将所述结果队列的现有内容(……、Link11、Link12、Link21、……),交付给tdu3,清空Qr的内容并重新开始队列操作,其中,Link11和Link12对应同一服务器地址S1,Link21对应与服务器地址S1不同的服务器地址S2。然后,tdu3接收到tdu2的反馈结果集合(……、Link11、Link12、Link21、……),更新所述等待队列,将该集合中对应的同一服务器地址的子链接地址连续排列,将不同服务器地址对应的地址块随机排列,从而保证了针对不同服务器的任务公平性。然后,将排序后子链接地址***所述等待队列,并一并***与每个子链接地址对应的调度时间(比如,Link11对应的调度时间为1,Link12对应的调度时间为3,Link21对应的调度时间为2)***所述等待队列,获得更新后的所述等待队列。
在本发明实施例中,请参考图8,步骤S102:基于所述调度时间对所述任务进行管理,包括:
S501:当所述***的当前时间到达所述待抓取队列的队头对应的任务的调度时间时,调度队头对应的任务,将队头对应的任务发送给所述网络爬虫,通过所述爬虫在所述目标网站服务器中抓取获得第三链接地址集;
S502:将所述第三链接地址集中每个链接地址基于对应的服务器地址按照第二预设规则***所述结果队列,获得更新后的结果队列。
在具体实施过程中,步骤S501至步骤S502的具体实现过程如下:
首先,当所述***的当前时间到达所述待抓取队列的对头对应的任务的调度时间时,调度队列的任务,将对头对应的任务发送给所述网络爬虫,通过所述网络爬虫在所述目标网站服务器中抓取获得第三链接地址集。也就是说,tdc获取所述待抓取队列队头URL地址,执行数据抓取操作并提取新的URL地址,由新的URL地址组成了所述第三链接地址集;然后,抓取结束后,tdc将新地址集合发送给tdu2,tdu2接收来自tdc的结果集合,按服务器地址***所述结果队列中。待当前时间满足下一任务的调度时间时,继续进行内容抓取及服务器地址的***。
以所述待抓取队列为包括Link1、……、Link3、Link2在内的队列长度为L的队列为例,对所述待抓取队列提取过程的整个流程进行说明,具体流程图请参考图9。数据抓取所述待抓取队列的对头Link1,所述网络爬虫执行数据抓取操作并提取新的URL地址(包括……、Link12、Link22、Link23、……)。然后,将该新的链接地址集中的每个链接地址基于对应的服务器地址(Link12对应服务器地址S1,Link22和Link23对应同一服务器地址S2)***所述结果队列,获得更新后的结果队列。
在本发明实施例中,一旦对所述至少三个工作队列中的任意一个队列进行更新时,通常将引起对其他队列中的至少一个队列同步进行更新,也就是说,在具体实施过程中,常采用上述提到的对所述待抓取队列的更新方法,以及对所述等待队列及结果队列的更新方法和对所述待抓取队列的链接地址提取操作,来一并对所述任务进行管理。当然,本领域的技术人员,还可以基于同样的发明构思来设计基于调度时间来对所述任务进行管理的方案,在此就不一一举例说明了。
实施例二
基于与本发明实施例一同样的发明构思,请参考图10,本发明实施例还提供了一种数据抓取装置,应用于一网络爬虫***,包括:
生成模块10,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
处理模块20,基于所述调度时间对所述任务进行管理;且在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。
在具体实施过程中,所述网络爬虫***可以是主机,还可以是服务器,等等。
在本发明实施例中,生成模块10用于:
基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
基于所述泊松过程模型,生成所述任务对应的调度时间。
在本发明实施例中,处理模块20用于:
建立包括待抓取队列、结果队列和等待队列的至少三个工作队列;
当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集;
在所述网络爬虫抓取所述第一链接地址集之后,将抓取过程中提取到的子链接地址集***所述结果队列,且将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间。
在本发明实施例中,处理模块20用于:
获取所述待抓取队列的队列长度;
若所述队列长度小于一预设调度阈值,将所述等待队列的每个链接地址根据优先级由小到大***所述待抓取队列,获得更新后的待抓取队列。
在本发明实施例中,处理模块20用于:
在接收到所述等待队列的更新请求时,将所述结果队列的每个子链接地址基于对应的服务器地址按照第一预设规则***所述等待队列,并将确定的每个子链接地址对应的调度时间相应的***所述等待队列,获得更新后的等待队列。
在本发明实施例中,处理模块20用于:
当所述***的当前时间到达所述待抓取队列的队头对应的任务的调度时间时,调度队头对应的任务,将队头对应的任务发送给所述网络爬虫,通过所述网络爬虫在所述目标网站服务器中抓取获得第三链接地址集;
将所述第三链接地址集中每个链接地址基于对应的服务器地址按照第二预设规则***所述结果队列,获得更新后的结果队列。
基于本申请实施例一同样的发明构思,本申请实施例中提供了一种计算机装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据抓取方法的步骤。
基于本申请实施例一同样的发明构思,本申请实施例还提供了计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据抓取方法的步骤。
在本发明实施例的技术方案中,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;基于所述调度时间对所述任务进行管理;在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取。也就是说,利用实际场景中用户访问互联网的行为,给抓取任务设置合理的调度时间,进一步地来管理任务,从而保证了数据抓取的效率,且在避免对同一服务器进程长时间的连续访问的同时,保证了任务调度的公平性。
在本发明实施例的技术方案中,通过对用户访问互联网这一行为进行仿真,建立泊松过程模型,进一步地,通过所述泊松过程模型生成网络爬虫访问目标网站服务器的时间间隔,在初始化时间点之后,能够进一步地生成所述网络爬虫对所述目标网站服务器访问的时间节点,进一步地,实现了所述网络爬虫对所述目标网站服务器的访问频率的控制。
在本发明实施例中,充分地利用了现有的带宽资源以及网络爬虫自身软硬件资源,在保证抓取效率的基础上,避免了由于对目标网站服务器的频繁抓取造成服务器负载过重,并解决了由此导致的网络爬虫被限制访问的问题。
本发明充分利用了实际场景中用户的访问行为及服务器的负载能力,给抓取任务设置合理的调度优先级,在避免对同一服务器进程长时间的连续访问的同时,保证了抓取任务调度的公平性。
本发明实施例中提出包括所述等待队列的多队列机制,保证所有的抓取任务都能在可接受的时间内被执行,避免了所述待抓取队列中的元素排队时,由于新生成的任务***队列造成已在任务队列中的某些任务长期得不到执行,也就是说,有效避免任务调度中“饿死”现象的发生,保证了数据抓取的公平性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种数据抓取方法,其特征在于,包括:
基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
基于所述调度时间对所述任务进行管理;
在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取;
其中,所述基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间,包括:
基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
基于所述泊松过程模型,生成所述任务对应的调度时间;
其中,所述基于所述泊松过程模型,生成所述任务对应的调度时间,包括:
通过所述泊松过程模型,生成所述网络爬虫对所述目标网站服务器进行访问的两条任务间的服从指数分布的时间间隔;
在初始化时间点之后,生成所述网络爬虫对所述目标网站服务器进行抓取数据的任务的调度时间。
2.如权利要求1所述的方法,其特征在于,所述基于所述调度时间对所述任务进行管理,包括:
建立包括待抓取队列、结果队列和等待队列的至少三个工作队列;
当***的当前时间到达所述任务对应的调度时间时,从所述待抓取队列中提取所述网络爬虫需在当前时刻进行抓取的第一链接地址集;
在所述网络爬虫抓取所述第一链接地址集之后,将抓取过程中提取到的子链接地址集***所述结果队列,且将所述网络爬虫尚未抓取且等待调度的第二链接地址集***所述等待队列,其中,所述结果队列还包括与所述子链接地址集对应的服务器地址集,每个子链接地址对应一个服务器地址,所述等待队列还包括与所述第二链接地址集对应的调度时间集,每个第二链接地址对应一个调度时间。
3.如权利要求2所述的方法,其特征在于,所述基于所述调度时间对所述任务进行管理,包括:
获取所述待抓取队列的队列长度;
若所述队列长度小于一预设调度阈值,将所述等待队列的每个链接地址根据优先级由小到大***所述待抓取队列,获得更新后的待抓取队列。
4.如权利要求2所述的方法,其特征在于,所述基于所述调度时间对所述任务进行管理,包括:
在接收到所述等待队列的更新请求时,将所述结果队列的每个子链接地址基于对应的服务器地址按照第一预设规则***所述等待队列,并将确定的每个子链接地址对应的调度时间相应的***所述等待队列,获得更新后的等待队列。
5.如权利要求2所述的方法,其特征在于,所述基于所述调度时间对所述任务进行管理,包括:
当所述***的当前时间到达所述待抓取队列的队头对应的任务的调度时间时,调度队头对应的任务,将队头对应的任务发送给所述网络爬虫,通过所述网络爬虫在所述目标网站服务器中抓取获得第三链接地址集;
将所述第三链接地址集中每个链接地址基于对应的服务器地址按照第二预设规则***所述结果队列,获得更新后的结果队列。
6.一种数据抓取装置,其特征在于,包括:
生成模块,基于用户访问互联网的行为,生成网络爬虫对目标网站服务器进行抓取数据的任务对应的调度时间;
处理模块,基于所述调度时间对所述任务进行管理;且在将所述任务发送给所述网络爬虫后,通过所述网络爬虫在所述目标网站服务器中进行数据抓取;
其中,所述生成模块用于:
基于用户访问互联网的行为,建立网络爬虫对目标网站服务器进行抓取数据的任务的泊松过程模型;
基于所述泊松过程模型,生成所述任务对应的调度时间;
其中,所述生成模块用于:
通过所述泊松过程模型,生成所述网络爬虫对所述目标网站服务器进行访问的两条任务间的服从指数分布的时间间隔;
在初始化时间点之后,生成所述网络爬虫对所述目标网站服务器进行抓取数据的任务的调度时间。
7.一种计算机装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一权项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一权项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710985479.2A CN110020046B (zh) | 2017-10-20 | 2017-10-20 | 一种数据抓取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710985479.2A CN110020046B (zh) | 2017-10-20 | 2017-10-20 | 一种数据抓取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110020046A CN110020046A (zh) | 2019-07-16 |
CN110020046B true CN110020046B (zh) | 2021-06-15 |
Family
ID=67186672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710985479.2A Active CN110020046B (zh) | 2017-10-20 | 2017-10-20 | 一种数据抓取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110020046B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442769A (zh) * | 2019-08-05 | 2019-11-12 | 深圳乐信软件技术有限公司 | 分布式数据爬取***、方法、装置、设备和存储介质 |
CN111428179B (zh) * | 2020-03-19 | 2023-09-19 | 新方正控股发展有限责任公司 | 图片监测方法、装置及电子设备 |
CN111753162A (zh) * | 2020-06-29 | 2020-10-09 | 平安国际智慧城市科技股份有限公司 | 数据爬取方法、装置、服务器及存储介质 |
CN114095207A (zh) * | 2021-10-26 | 2022-02-25 | 北京连星科技有限公司 | 一种基于分布式调度IPv6网站检测方法 |
CN114547418A (zh) * | 2022-02-25 | 2022-05-27 | 哈尔滨工程大学 | 基于疲劳仿真模型的拟人爬虫方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725452B1 (en) * | 2003-07-03 | 2010-05-25 | Google Inc. | Scheduler for search engine crawler |
CN103718171A (zh) * | 2011-08-09 | 2014-04-09 | 微软公司 | 以用户历史优化web爬取 |
CN103902579A (zh) * | 2012-12-27 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 获取信息的方法和装置 |
CN105243122A (zh) * | 2015-09-29 | 2016-01-13 | 浪潮电子信息产业股份有限公司 | 一种基于社交软件的数据获取方法及装置 |
-
2017
- 2017-10-20 CN CN201710985479.2A patent/CN110020046B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725452B1 (en) * | 2003-07-03 | 2010-05-25 | Google Inc. | Scheduler for search engine crawler |
CN103718171A (zh) * | 2011-08-09 | 2014-04-09 | 微软公司 | 以用户历史优化web爬取 |
CN103902579A (zh) * | 2012-12-27 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 获取信息的方法和装置 |
CN105243122A (zh) * | 2015-09-29 | 2016-01-13 | 浪潮电子信息产业股份有限公司 | 一种基于社交软件的数据获取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110020046A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110020046B (zh) | 一种数据抓取方法及装置 | |
JP6669682B2 (ja) | クラウドサーバスケジューリング方法及び装置 | |
US8826284B1 (en) | Scalable task scheduling | |
US20210311781A1 (en) | Method and system for scalable job processing | |
CN103645939B (zh) | 一种图片抓取的方法和*** | |
US8434085B2 (en) | Scalable scheduling of tasks in heterogeneous systems | |
CN104932932B (zh) | 一种业务异步处理方法、装置和*** | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度***及服务器集群 | |
US10944683B1 (en) | Hybrid queue system for request throttling | |
CN103428198B (zh) | 网络设备、***和方法 | |
Chen et al. | Understanding TCP incast and its implications for big data workloads | |
CN106603692B (zh) | 一种分布式存储***中的数据存储方法及装置 | |
CN107666474B (zh) | 一种网络报文处理方法、装置及网络服务器 | |
KR20190028477A (ko) | 분산 컴퓨팅 시스템에서의 적응적 리소스 관리 | |
CN107180050A (zh) | 一种数据抓取***及方法 | |
CN103053146A (zh) | 数据迁移方法和设备 | |
WO2015075856A1 (en) | Cross-platform workload processing | |
Banaie et al. | Performance analysis of multithreaded IoT gateway | |
CN111435315A (zh) | 分配资源的方法、装置、设备和计算机可读介质 | |
US9535758B2 (en) | Managing data distribution to networked client computing devices | |
CN111555987B (zh) | 限流配置方法、装置、设备及计算机存储介质 | |
CN108228323B (zh) | 基于数据本地性的Hadoop任务调度方法及装置 | |
Iqbal et al. | Instant queue occupancy used for automatic traffic scheduling in data center networks | |
CN115981871B (zh) | 一种gpu资源调度方法、装置、设备及存储介质 | |
JP2004046372A (ja) | 分散処理システム、リソース割当方法およびプログラムならびにリソース割当プログラムが記録された記録媒体 |
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 |