互联网数据获取方法及装置制造方法
【专利摘要】本发明公开了一种互联网数据获取方法及装置。其中,该方法包括:确定获取互联网数据的访问任务,其中,访问任务中携带有任务信息;根据任务信息调用对应的应用开发接口API单元;获取API单元返回的第一数据;计算下一次获取互联网数据的获取时间;在获取时间获取API单元返回的第二数据;返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,其中,互联网数据包括第一数据和第二数据。采用本发明,解决了现有技术中获取互联网社交平台数据不准确、不完整的问题,实现了准确完整的获取互联网社交平台的数据的效果。
【专利说明】互联网数据获取方法及装置【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种互联网数据获取方法及装置。
【背景技术】
[0002]社交媒体相比传统的媒体有一个非常大的区别,就是人与人之间的社会关系被映射到网络上,并且可以通过社交平台提供的各类应用开发接口获取到用户的部分或全部数据。基于应用开发接口(API, Application Programming Interface),第三方开发者们除了开发各种各样丰富的社交功能的应用程序之外,还可以方便地获取社交平台上的各种数据,其中,包括社交平台用户的个人信息、微博内容、用户之间的关系信息等等,通过这些数据对社会学、市场营销、网络分析以及计算语言学等诸多领域有直接的帮助和影响。比如对社会学来说,传统研究社交网络的方法主要是由学者个人或团队来构造,耗时耗力,成本高,通过社交平台等社交网络和开放接口,就可以很容易构造几百万、几千万甚至上亿用户之间的关系网络,基于此网络可进行更加深入的社会学研究。
[0003]社交媒体虽然也可以看作是HTTP协议的网站、是传统互联网的一部分,但是与传统网站相比又有所区别。一个显著差异在于,社交媒体需要用户登录访问才能看到详细的内容,特别是社交媒体的API是需要预先授权才可以使用的;而传统网站如新闻、博客等,是不需要用户预先登录就可以访问的。传统的爬虫直接下载页面即可,若将传统的网络爬虫的方法应用于基于微博API的数据获取上会出现获取的数据不准确等若干问题。
[0004]在传统的互联网应用中,数据获取技术主要是网络爬虫技术。网络爬虫是类似的数据获取技术,其基本原理是根据URL (即统一资源定位符)获取页面,访问网站,下载页面,从其中解析出新的 URL链接地址,然后下载新的页面。参考Modern InformationRetrieval、《搜索引擎:信息检索实践》等。
[0005]现有的社交平台(如新浪微博、腾讯微博)提供的开发API有如下特点:
[0006](I) 一次API访问就是一次HTTP请求。一次API调用返回页面的信息最小单位是记录;API调用返回的信息由若干条记录组成,一条记录可以表示一个用户详细信息、一条微博、一条评论等。
[0007](2) 一次API调用返回的记录数有上限。比如新浪微博规定获取微博列表API单次返回记录不超过200条,也就是单次访问最多返回200条。虽然有的API提供翻页的功能,但总页数也是有限制的,翻页可以指定页码,最多可获记录数=200条/页X最大页码。
[0008](3)API调用得到的记录都是最新的记录,并且记录呈数据流形式,即一旦错过了获取的时机,就很难再次获取到了。比如获取搜索关键词的微博,每次API可获得最多200条记录,一共可以翻50页,总计可获取最新的20X50 = 1000条记录(微博)。如果当时含有此关键词的微博超过1000条,则只能得到最新的1000条,余下的微博记录就获取不到了。
[0009](4)现有的API调用的记录依赖token资源。访问微博API需要通过“授权”获得token (比如新浪微博、腾讯微博是以0Auth2.0方式授权)。
[0010](5)微博API访问时有限制条件。比如每小时所有接口访问不能超过4万次,每个IP每小时不能超过4万次。
[0011](6)访问API有成本。有的接口还有可能是付费的接口,每次访问都有费用产生。
[0012]上述的微博API是通过HTTP协议传输数据。如果仅用Web爬虫技术,虽然理论上可行,但是会遇到若干问题:
[0013](I) URL不包含在Web页面中,在获取微博API数据的过程中,需要根据查询、页码及其他信息构造新URL ;
[0014]⑵API返回的是有结构的数据,通常用XML或JSON格式,如果忽略这些结构信息会丢失一些有价值的线索;
[0015](3)如果API访问时不加限制的访问页面,会被封禁IP、微博账号甚至应用账号;
[0016](4)没有充分获取API结果中信息,以有效地访问API获取数据;
[0017](5)需要token资源才能获取API的结果,而token资源有有效期,需要合理管理(账号授权、检查token是否失效等)。
[0018]针对现有技术中获取互联网社交平台数据不准确、不完整的问题,目前尚未有公开的有效解决方案。
【发明内容】
[0019]针对相关技术中获取互联网社交平台数据不准确、不完整的问题,目前尚未有提出的有效解决方案。为此,本发明的主要目的在于提供一种互联网数据获取方法及装置,以解决上述问题。
[0020]为了实现上述目的,根据本发明的一个方面,提供了一种互联网数据获取方法,该方法包括:确定获取互联网数据的访问任务,其中,访问任务中携带有任务信息;根据任务信息调用对应的应用开发接口 API单元;获取API单元返回的第一数据;计算下一次获取互联网数据的获取时间;在获取时间获取API单元返回的第二数据;返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,其中,互联网数据包括第一数据和第二数据。
[0021]进一步地,确定获取互联网数据的访问任务的步骤包括:获取任务列表中的任务开始时间;在当前时间超过或达到任务开始时间的情况下,确定任务开始时间对应的任务为访问任务。
[0022]进一步地,根据任务信息调用对应的API单元的步骤包括:获取API单元对应的令牌token和任务信息中的访问参数;创建访问任务对应的URL ;将token、URL以及访问参数发送至API单元,以调用API单元。
[0023]进一步地,在获取API单元返回的第一数据之后,互联网数据获取方法还包括:解析第一数据得到数据列表;在获取时间获取API单元返回的第二数据之后,互联网数据获取方法还包括:解析第二数据得到第一解析结果,将第一解析结果补入数据列表中;在执行返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务的过程中,解析获取到的从API单元返回的数据得到第二解析结果,将第二解析结果补入数据列表中。[0024]进一步地,将在当前时间获取互联网数据的过程中得到的数据列表记作第一数据子列表,将在当前时间之前获取互联网数据的过程中得到的数据列表记作第二数据子列表,其中,计算下一次获取互联网数据的获取时间的步骤包括:计算第一数据子列表和第二数据子列表的覆盖率;使用覆盖率计算时间变化量;将时间变化量与当前时间之和作为下一次的获取时间。
[0025]为了实现上述目的,根据本发明的另一方面,提供了一种互联网数据获取装置,该装置包括:任务确定模块,用于确定获取互联网数据的访问任务,其中,访问任务中携带有任务信息;调用模块,用于根据任务信息调用对应的API单元;第一数据获取模块,用于获取API单元返回的第一数据;时间计算模块,用于计算下一次获取互联网数据的获取时间;第二数据获取模块,用于在获取时间获取API单元返回的第二数据;循环模块,用于返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,其中,互联网数据包括第一数据和第二数据。
[0026]进一步地,任务确定模块包括:时间获取子模块,用于获取任务列表中的任务开始时间;任务确定子模块,用于在当前时间超过或达到任务开始时间的情况下,确定任务开始时间对应的任务为访问任务。
[0027]进一步地,调用模块包括:参数获取模块,用于获取API单元对应的令牌token和任务信息中的访问参数;创建模块,用于创建访问任务对应的URL;发送模块,用于将token、URL以及访问参数发送至API单元,以调用API单元。
[0028]进一步地,互联网数据获取装置还包括:第一解析模块,用于解析第一数据得到数据列表;第二解析模块,用于解析第二数据得到第一解析结果;第一保存模块,用于将第一解析结果补入数据列表中;第三解析模块,用于解析从API单元返回的数据得到第二解析结果;第二保存模块,用于将第二解析结果补入数据列表中。
[0029]进一步地,时间计算模块包括:覆盖率计算模块,用于计算第一数据子列表和第二数据子列表的覆盖率;时间变化量计算模块,用于使用覆盖率计算时间变化量;获取时间计算模块,用于将时间变化量与当前时间之和作为获取时间,其中,将在当前时间获取互联网数据的过程中得到的数据列表记作第一数据子列表,将在当前时间之前获取互联网数据的过程中得到的数据列表记作第二数据子列表。
[0030]采用本发明,通过任务确定模块确定获取互联网数据的访问任务,在调用模块根据访问任务中携带的任务信息调用对应的API单元之后,通过第一数据获取模块获取API单元返回的第一数据,然后时间计算模块计算下一次获取互联网数据的获取时间,并在获取时间获取API单元返回的第二数据,然后返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,以获取到与该访问任务对应的互联网数据。采用本发明,返回的是API数据,从而可以很好的保证返回数据的完整性和准确性,并且通过API获取返回的数据,不受页面访问的限制,从而不会被封禁IP、微博账号或应用账号,并且每隔一段时间获取一次数据,保证了获取数据的准确性,从而解决了现有技术中获取互联网社交平台数据不准确、不完整的问题,实现了准确完整的获取互联网社交平台的数据的效果。
【专利附图】
【附图说明】
[0031]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0032]图1是根据本发明实施例的互联网数据获取装置的结构示意图;
[0033]图2是根据本发明实施例的互联网数据获取方法的流程图;
[0034]图3是根据本发明实施例的一种可选的互联网数据获取方法的流程图;
[0035]图4是根据图3所示实施例的互联网数据获取方法的示意图。
【具体实施方式】
[0036]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0037]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0038]图1是根据本发明实施例的互联网数据获取装置的结构示意图。如图1所示,该装置可以包括:任务确定模块10,用于确定获取互联网数据的访问任务,其中,访问任务中携带有任务信息;调用模块20,用于根据任务信息调用对应的API单元;第一数据获取模块30,用于获取API单元返回的第一数据;时间计算模块40,用于计算下一次获取互联网数据的获取时间;第二数据获取模块50,用于在获取时间获取API单元返回的第二数据;循环模块60,用于返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,其中,互联网数据包括第一数据和第二数据。
[0039]采用本发明,通过任务确定模块确定获取互联网数据的访问任务,在调用模块根据访问任务中携带的任务信息调用对应的API单元之后,通过第一数据获取模块获取API单元返回的第一数据,然后时间计算模块计算下一次获取互联网数据的获取时间,并在获取时间获取API单元返回的第二数据,然后返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,以获取到与该访问任务对应的互联网数据。采用本发明,返回的是API数据,通过API获取返回的数据,不受页面访问的限制,从而不会被封禁IP、微博账号或应用账号,并且每隔一段时间获取一次数据,保证了获取数据的准确性,从而解决了现有技术中获取互联网社交平台数据不准确、不完整的问题,实现了准确完整的获取互联网社交平台的数据的效果。
[0040]在上述实施例中,可以随时获取社交平台的网站信息;并且处理信息的单位是Web页面,且不需要考虑IP限制问题。另外,获取数据的代价很小,成本很低,可以有效利用资源的问题。
[0041]在本发明的上述实施例中,任务确定模块可以包括:时间获取子模块,用于获取任务列表中的任务开始时间;任务确定子模块,用于在当前时间超过或达到任务开始时间的情况下,确定任务开始时间对应的任务为访问任务。
[0042] 根据本发明的上述实施例,调用模块可以包括:参数获取模块,用于获取API单元对应的令牌token和任务信息中的访问参数;创建模块,用于创建访问任务对应的URL ;发送模块,用于将token、URL以及访问参数发送至API单元,以调用API单元。
[0043]具体地,执行装置负责调用根据接收的任务信息调用对应的API单元,获取API单元返回的互联网数据。在上述步骤中,执行装置需要一些资源的支持,比如访问API所需的token。具体地,将本发明上述实施例应用于微博应用中,现有的微博一般采用OAuth协议授权以取得token,通常token有一定有效时间,并且在授权之后就会拿到有效的token,然后将token保存在API访问资源库中;上述实施例中的执行装置构造API访问的URL,如图4所示,将有效的API访问资源(如token、URL和访问参数)发给API服务器,API服务器会返回互联网数据或错误提示信息。
[0044]在本发明的上述实施例中,互联网数据获取装置还包括:第一解析模块,用于解析第一数据得到数据列表;第二解析模块,用于解析第二数据得到第一解析结果;第一保存模块,用于将第一解析结果补入数据列表中;第三解析模块,用于解析从API单元返回的数据得到第二解析结果;第二保存模块,用于将第二解析结果补入数据列表中。
[0045]根据本发明的上述实施例,时间计算模块可以包括:覆盖率计算模块,用于计算第一数据子列表和第二数据子列表的覆盖率;时间变化量计算模块,用于使用覆盖率计算时间变化量;获取时间计算模块,用于将时间变化量与当前时间之和作为下一次的获取时间,其中,将在当前时间获取互联网数据的过程中得到的数据列表记作第一数据子列表,将在当前时间之前获取互联网数据的过程中得到的数据列表记作第二数据子列表。
[0046]在本发明上述实施例中,执行装置调用API单元,获取API单元返回的互联网数据之后,将获取到的数据解析成记录列表。具体地,API单元返回的结果常用XML或JSON格式记录。其中,将在当前时间获取互联网数据的过程中得到的数据列表记作第一数据子列表L,将在当前时间之前获取互联网数据的过程中得到的数据列表记作第二数据子列表U。
[0047]在获取当前时间的第一数据子列表L和第二数据子列表Ltl之后,对比Ltl和L,重新估算调整下一次获取互联网数据的获取时间,并动态调整时间装置。
[0048]具体地,计算第一数据子列表L和第二数据子列表Ltl两个数据列表的覆盖率P:
Iln nZl
[0049]P,其中,P是介于O~I之间的数。
[0050]在获取覆盖率P之后,计算第一数据子列表L和第二数据子列表Ltl的时间变化量:At = At' (αρ+β),其中At'表示上一次的时间变化量,初始值At。= Atniin, α和β是常数,一组经验参数为α =0.5, β =0.8。在上述公式中,如果At小于最小时间Atmin,则取最小间隔时间At = Δ tmino如果At超过Atmax,则At = Atmax,其中,Atmin和Δ tmax是预设的时间值。
[0051]在上述实施例中,在获取时间变化量之后,确定获取时间,即下一次获取数据的时亥Ij为T+At,其中T表示当前时刻。
[0052]图2是根据本发明实施例的互联网数据获取方法的流程图,如图2所示该方法包括如下步骤:[0053]步骤S202,确定获取互联网数据的访问任务,其中,访问任务中携带有任务信息。
[0054]步骤S204,根据任务信息调用对应的API单元。
[0055]步骤S206,获取API单元返回的第一数据。
[0056]步骤S208,计算下一次获取互联网数据的获取时间。
[0057]步骤S210,在获取时间获取API单元返回的第二数据。
[0058]步骤S212,返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,其中,互联网数据包括第一数据和第二数据。
[0059]采用本发明,确定获取互联网数据的访问任务,根据访问任务中携带的任务信息调用对应的API单元,并获取API单元返回的第一数据,然后计算下一次获取互联网数据的获取时间,并在获取时间获取API单元返回的第二数据,然后返回执行计算下一次获取互联网数据的获取时间的步骤,直至完成访问任务,以获取到与该访问任务对应的互联网数据。采用本发明,返回的是API数据,通过API获取返回的数据,不受页面访问的限制,从而不会被封禁IP、微博账号或应用账号,并且每隔一段时间获取一次数据,保证了获取数据的准确性,从而解决了现有技术中获取互联网社交平台数据不准确、不完整的问题,实现了准确完整的获取互联网社交平台的数据的效果。
[0060]上述实施例中的API 为应用开发接口(Application Programming Interface),API返回的数据通常为XML或JSON格式。
[0061]上述实施例中的API单元可以为API服务器。
[0062]如图3所示,本发明的上述实施例中动态调整获取数据的时间可以通过如下步骤实现:
[0063]步骤S302:获取有效的API访问资源。
[0064]该步骤对应图2所示实施例的步骤S202。
[0065]步骤S304:调用API单元。
[0066]步骤S306:将API返回的数据进行解析得到η条记录。
[0067]步骤S308:计算下一次获取数据的获取时间。
[0068]步骤S310:在获取时间从API单元获取数据。
[0069]在本发明的上述实施例中,确定获取互联网数据的访问任务的步骤可以包括:获取任务列表中的任务开始时间;在当前时间超过或达到任务开始时间的情况下,确定任务开始时间对应的任务为访问任务。
[0070]具体地,如图4所示,可以使用定时驱动装置检查任务列表中是否有待访问API的访问任务。具体地,可以检测任务列表中是否有到达或者超过“任务开始时间”的访问任务,如果有,则立即启动该访问任务。具体地,定时驱动装置将任务信息(包括API名称、访问参数等)发送给数据获取装置的执行装置。
[0071]其中,上述实施例中的任务列表可以是保存于内存中,也可以是保存于数据库中。
[0072]表I示出了任务列表的格式。
[0073]表1:
[0074]
【权利要求】
1.一种互联网数据获取方法,其特征在于,包括: 确定获取互联网数据的访问任务,其中,所述访问任务中携带有任务信息; 根据所述任务信息调用对应的应用开发接口 API单元; 获取所述API单元返回的第一数据; 计算下一次获取所述互联网数据的获取时间; 在所述获取时间获取所述API单元返回的第二数据; 返回执行计算下一次获取所述互联网数据的获取时间的步骤,直至完成所述访问任务,其中,所述互联网数据包括所述第一数据和所述第二数据。
2.根据权利要求1所述的互联网数据获取方法,其特征在于,确定获取互联网数据的访问任务的步骤包括: 获取任务列表中的任务开始时间; 在当前时间超过或达到 所述任务开始时间的情况下,确定所述任务开始时间对应的任务为所述访问任务。
3.根据权利要求1所述的互联网数据获取方法,其特征在于,根据所述任务信息调用对应的API单元的步骤包括: 获取所述API单元对应的令牌token和所述任务信息中的访问参数; 创建所述访问任务对应的URL ; 将所述token、所述URL以及所述访问参数发送至所述API单元,以调用所述API单元。
4.根据权利要求1所述的互联网数据获取方法,其特征在于, 在获取所述API单元返回的第一数据之后,所述互联网数据获取方法还包括:解析所述第一数据得到数据列表; 在所述获取时间获取所述API单元返回的第二数据之后,所述互联网数据获取方法还包括:解析所述第二数据得到第一解析结果,将所述第一解析结果补入所述数据列表中;在执行返回执行计算下一次获取所述互联网数据的获取时间的步骤,直至完成所述访问任务的过程中,解析获取到的从所述API单元返回的数据得到第二解析结果,将所述第二解析结果补入所述数据列表中。
5.根据权利要求1所述的互联网数据获取方法,其特征在于,将在当前时间获取所述互联网数据的过程中得到的数据列表记作第一数据子列表,将在所述当前时间之前获取所述互联网数据的过程中得到的所述数据列表记作第二数据子列表,其中,计算下一次获取所述互联网数据的获取时间的步骤包括: 计算所述第一数据子列表和所述第二数据子列表的覆盖率; 使用所述覆盖率计算时间变化量; 将所述时间变化量与所述当前时间之和作为下一次的所述获取时间。
6.一种互联网数据获取装置,其特征在于,包括: 任务确定模块,用于确定获取互联网数据的访问任务,其中,所述访问任务中携带有任务信息; 调用模块,用于根据所述任务信息调用对应的API单元; 第一数据获取模块,用于获取所述API单元返回的第一数据; 时间计算模块,用于计算下一次获取所述互联网数据的获取时间;第二数据获取模块,用于在所述获取时间获取所述API单元返回的第二数据; 循环模块,用于返回执行计算下一次获取所述互联网数据的获取时间的步骤,直至完成所述访问任务,其中,所述互联网数据包括所述第一数据和所述第二数据。
7.根据权利要求6所述的互联网数据获取装置,其特征在于,所述任务确定模块包括: 时间获取子模块,用于获取任务列表中的任务开始时间; 任务确定子模块,用于在当前时间超过或达到所述任务开始时间的情况下,确定所述任务开始时间对应的任务为所述访问任务。
8.根据权利要求6所述的互联网数据获取装置,其特征在于,所述调用模块包括: 参数获取模块,用于获取所述API单元对应的令牌token和所述任务信息中的访问参数; 创建模块,用于创建所述访问任务对应的URL ; 发送模块,用于将所述token 、所述URL以及所述访问参数发送至所述API单元,以调用所述API单元。
9.根据权利要求6所述的互联网数据获取装置,其特征在于,所述互联网数据获取装置还包括: 第一解析模块,用于解析所述第一数据得到数据列表; 第二解析模块,用于解析所述第二数据得到第一解析结果; 第一保存模块,用于将所述第一解析结果补入所述数据列表中; 第三解析模块,用于解析从所述API单元返回的数据得到第二解析结果; 第二保存模块,用于将所述第二解析结果补入所述数据列表中。
10.根据权利要求6所述的互联网数据获取装置,其特征在于,所述时间计算模块包括: 覆盖率计算模块,用于计算第一数据子列表和第二数据子列表的覆盖率; 时间变化量计算模块,用于使用所述覆盖率计算时间变化量; 获取时间计算模块,用于将所述时间变化量与当前时间之和作为所述获取时间, 其中,将在所述当前时间获取所述互联网数据的过程中得到的数据列表记作所述第一数据子列表,将在所述当前时间之前获取所述互联网数据的过程中得到的所述数据列表记作所述第二数据子列表。
【文档编号】H04L29/08GK103957245SQ201410163160
【公开日】2014年7月30日 申请日期:2014年4月22日 优先权日:2014年4月22日
【发明者】高立琦, 焦扬 申请人:北京微众文化传媒有限公司