一种微博信息抓取方法及装置与流程

文档序号:12845964阅读:199来源:国知局
一种微博信息抓取方法及装置与流程
本发明涉及网络技术领域,具体涉及一种微博信息抓取方法及装置。

背景技术:
随着微博的日趋普及,微博用户量也在不断的稳步上升,每天数以千万计的用户发布的微博所包含的信息量是不可小觑的。为了从用户发布的众多微博中提取出新闻热点,或者根据用户发布的微博分析用户的兴趣,进行微博营销,就需要及时全面的抓取用户所发布的微博信息。目前的信息抓取过程主要是调用微博平台API来实现,但是出于对微博平台的维护成本以及信息保留等方面的考虑,各大微博平台对信息抓取的次数以及频率都有所限制,即抓取资源有限。如何利用这有限的抓取资源快速获取到更多的有效微博信息,在实际应用中具有重要意义。

技术实现要素:
本发明实施例的微博信息抓取方法及装置,实现了利用有限的抓取资源获取尽量多的有效微博信息的目的。为此,本发明实施例提供如下技术方案:一种微博信息抓取方法,所述方法包括:获取待抓取微博用户,并判断所述待抓取微博用户的类型;如果所述待抓取微博用户为活跃用户,则计算该待抓取微博用户的抓取周期,并根据所述抓取周期预测抓取时间点进行微博信息抓取;如果所述待抓取微博用户为非活跃用户,则获取该待抓取微博用户的抓取状态以及剩余抓取用户量,如果所述抓取状态表示能进行微博信息抓取,且所述剩余抓取用户量不为零,则对所述待抓取微博用户进行微博信息抓取。优选的,所述获取待抓取微博用户,包括:选取至少一个认证用户作为种子用户,并将所述种子用户作为未处理用户添加到用户列表;判断所述未处理用户是否具有下级用户:如果具有,则获取该未处理用户的下级用户,并将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;将所述下级用户作为未处理用户,继续执行所述判断未处理用户是否具有下级用户的步骤;如果不具有,则设置该未处理用户的状态为已处理。优选的,所述获取该未处理用户的下级用户,包括:通过所述未处理用户的用户关系网获取所述下级用户;或者,抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。优选的,所述判断所述待抓取微博用户的类型,包括:根据所述待抓取微博用户发布微博的频率确定用户活跃度;根据预设活跃值与所述用户活跃度判断所述待抓取微博用户的类型,如果所述用户活跃度不小于所述预设活跃值,则判定所述待抓取微博用户为活跃用户;否则判定所述待抓取微博用户为非活跃用户。优选的,所述根据所述待抓取微博用户发布微博的频率确定用户活跃度,包括:根据所述待抓取微博用户发布的微博计算用户的平均发帖间隔;从预设数据库中查找与所述平均发帖间隔相对应的活跃度。一种微博信息抓取装置,所述装置包括:第一获取单元,用于获取待抓取微博用户;第一判断单元,用于判断所述第一获取单元获取的待抓取微博用户的类型;计算单元,用于在所述第一判断单元判定所述待抓取微博用户为活跃用户时,计算该待抓取微博用户的抓取周期;抓取单元,用于根据所述抓取周期预测抓取时间点进行微博信息抓取;第二获取单元,用户在所述第一判断单元判定所述待抓取微博用户为非活跃用户时,获取该待抓取微博用户的抓取状态以及剩余抓取用户量;所述抓取单元,还用于在所述抓取状态表示能进行微博信息抓取,且所述剩余抓取用户量不为零时,对所述待抓取微博用户进行微博信息抓取。优选的,所述第一获取单元包括:选取单元,用于选取至少一个认证用户作为种子用户,并将所述种子用户作为未处理用户添加到用户列表;第二判断单元,用于判断所述未处理用户是否具有下级用户:第三获取单元,用于在所述第二判断单元判定所述未处理用户具有下级用户时,获取该未处理用户的下级用户,添加单元,用于将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;将所述下级用户作为未处理用户,通知所述第二判断单元继续判断未处理用户是否具有下级用户;设置单元,用于在所述第二判断单元判定所述未处理用户不具有下级用户时,则设置该未处理用户的状态为已处理。优选的,所述第三获取单元,具体用于通过所述未处理用户的用户关系网获取所述下级用户;或者,所述第三获取单元,具体用于抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。优选的,所述第一判断单元包括:确定单元,用于根据所述待抓取微博用户发布微博的频率确定用户活跃度;判断子单元,用于根据预设活跃值与所述用户活跃度判断所述待抓取微博用户的类型,如果所述用户活跃度不小于所述预设活跃值,则判定所述待抓取微博用户为活跃用户;否则判定所述待抓取微博用户为非活跃用户。优选的,所述计算单元包括:计算子单元,用于根据所述待抓取微博用户发布的微博计算用户的平均发帖间隔;查找单元,用于从预设数据库中查找与所述平均发帖间隔相对应的活跃度。本发明实施的微博信息抓取方法及装置,首先挖掘出尽量多的待抓取微博用户作为本发明的处理对象,然后根据这些处理对象的活跃度对其进行分类处理:如果处理对象为活跃用户,则统计分析其发布微博的行为特性,并根据其行为特性设置抓取周期,从而可以利用抓取周期预测抓取时间点,进行有针对性的信息抓取;如果处理对象为非活跃用户,则根据其当前的抓取状态以及当前剩余抓取用户量判断是否对其进行信息抓取。本发明通过对不同类型的用户进行区别处理的方式,实现了抓取资源的合理分配与使用,提高了资源利用率,同时还能保证每次抓取过程均能抓取到较多的微博信息,提高了信息抓取效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。图1是本发明微博信息抓取方法的流程图;图2是本发明中获取待抓取微博用户的流程图;图3是本发明中确定用户类型的流程图;图4是本发明中确定用户活跃度的流程图;图5是本发明微博信息抓取装置的示意图;图6是本发明中第一获取单元的示意图;图7是本发明中第一判断单元的示意图;图8是本发明中计算单元的示意图。具体实施方式为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。为了提取新闻热点或分析用户兴趣,应及时全面的抓取用户发布的微博信息,考虑到现有技术中各大微博平台对信息抓取的次数以及频率的限制,若针对不同类型的微博用户采用相同方式进行信息抓取,如针对每天都会有微博发布、转发、评论等行为的活跃用户,以及较少登录微博的非活跃用户而言,采用相同方式进行信息抓取显然会导致抓取资源的不合理分配与使用,致使微博信息抓取效率低下。为了提高信息抓取效率,充分利用有限的抓取资源快速准确的获取到更多的有效微博信息,提出了本发明的微博信息抓取方案。本发明方案中,分析待抓取微博用户的类型,针对不同类型的用户进行区别处理。下面对本发明的具体实现过程进行解释说明。参见图1,示出了本发明微博信息抓取方法的流程图,可包括:步骤101,获取待抓取微博用户,并判断所述待抓取微博用户的类型。考虑到各大微博平台每天对信息抓取资源的限制,若想利用这有限的抓取资源,抓取到更多的有效微博信息,就应该针对不同类型的用户制定不同的抓取方案。首先要获取待抓取的微博用户,也即先进行微博用户挖掘,确定出尽量多的信息抓取对象。作为本步骤获取待抓取微博用户的一种实现方式,可体现为图2所示流程图,可包括:步骤201,选取至少一个认证用户作为种子用户,并将所述种子用户作为未处理用户添加到用户列表。步骤202,判断所述未处理用户是否具有下级用户,如果具有则执行步骤203,如果不具有则执行步骤205。步骤203,获取该未处理用户的下级用户,并将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理。步骤204,将所述下级用户作为未处理用户,返回执行步骤202。步骤205,设置该未处理用户的状态为已处理。微博用户可大致被分为两种类型:认证用户、普通用户。为了挖掘出尽可能多的微博用户,本发明从影响力大、用户关系网复杂的认证用户中确定种子用户。作为本发明确定种子用户的一种实现方式,可在微博名人堂页面抓取,如将影响力排行或者人气排行的前100名用户作为种子用户,或者,根据营销需要,有针对性的抓取某种分类下的认证用户,如当前需要推广的是一款旅游产品,则可抓取旅游分类下的认证用户作为种子用户。本发明对从认证用户中确定种子用户的具体方式可不做限定。确定出种子用户之后,可将这些种子用户作为未处理用户添加到用户列表,判断未处理用户是否具有下级用户,并进行如下处理:(1)如果未处理用户不具有下级用户,则说明该未处理用户为底层节点,当前已挖掘出所有与种子用户直接或间接相关的所有微博用户,此时可直接将该未处理用户的状态标识为已处理。(2)如果未处理用户具有下级用户,则说明该未处理用户不是底层节点,还可在其下级用户的基础上进一步进行递归挖掘,此时,可做如下处理:a.将该未处理用户的状态标识为已处理;b.将该未处理用户的下级用户添加到用户列表中;c.将下级用户的状态标识为未处理状态,以便在此基础上继续进行递归挖掘。经上述3个处理动作之后,即说明用户列表中还存在未处理用户,应返回执行步骤202,继续判断这些下级用户作为未处理用户时,其是否存在下级用户,然后再根据判断结果进行区别处理,此处不再赘述。需要说明的是,本发明提供了两种获取未处理用户的下级用户的实现方式,下面分别进行解释说明。(1)通过所述未处理用户的用户关系网获取所述下级用户。用户关系网指的是微博用户之间的关系,包括关注和粉丝两种关系,一般采用节点图来表示,其中,节点表示微博用户,两节点间的连线表示用户间的关系。在微博中,用户A可以关注、接收其感兴趣的用户B发布的微博,此时,用户A就是用户B的粉丝,相应地用户B就是用户A的关注。作为本发明获取用户关系网的一种实现方式,可通过调用微博开放平台API的方式实现,获取某个未处理用户的关注列表和粉丝列表。因为关注列表和粉丝列表中的用户是通过该未处理用户挖掘到的,故关注列表和粉丝列表中的用户都可称为是该未处理用户的下级用户。(2)抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。在用户A与用户B之间既不是关注,也不是粉丝关系的情况下,用户A也可能会转发和/或评论用户B发布的微博,此时,我们可以认为用户A与B之间产生了关联关系,这种情况下,用户A也可视为是用户B的下级用户。因此,作为本发明获取下级用户的另一种实现方式,还可通过抓取转发和/或评论了未处理用户发布的微博的用户的方式实现。按照上文介绍方式挖掘出的微博用户即可视为本发明的处理对象—待抓取微博用户,为了实现微博用户的区别处理,此时还应识别出这些微博用户的类型。本发明中的微博用户类型可被分为活跃用户和非活跃用户两种,且活跃用户占少量,非活跃用户量较大。针对这两种类型,本发明提供了两种不同的处理方式。对于活跃用户而言,可采用步骤102的方式进行处理,对于非活跃用户,则可采用步骤103的方式进行处理,对此将在下文进行解释说明。对于确定用户类型的实现方式此处暂不详述。步骤102,如果所述待抓取微博用户为活跃用户,则计算该待抓取微博用户的抓取周期,并根据所述抓取周期预测抓取时间点进行微博信息抓取。如上文所述,活跃用户所占数量较少,但这部分用户提供的微博信息量却很大,根据这一特性,我们可以逐一分析每个活跃用户发布微博的行为特性,并根据其行为特性为其设置对应的抓取周期,然后根据抓取周期预测的抓取时间点(也即用户可能发布微博的时间点)进行有针对性的信息抓取。需要说明的是,为活跃用户确定的抓取周期可以是固定周期也可以是变周期。也就是说,针对某个活跃用户,可以通过统计分析其发布的历史微博,获得其在单位时间(如小时、天、周等)内发布微博的平均间隔,并以此为依据计算一个固定的抓取周期,按照该固定抓取周期预测抓取时间点。其中,单位时间发布微博的平均间隔即可理解为该用户的行为特性。或者,针对某个活跃用户,还可以通过统计分析其发布的历史微博,获得其在单位时间(如小时、天、周等)内发布微博的繁忙期和空闲期,并为繁忙期和空闲期设置不同的抓取周期,通过变周期的方式进行信息抓取。如经统计发现,某个活跃用户在吃午饭时间、乘坐地铁时间、或者傍晚时分会较为频繁的发布微博,那么这些时间段即可被定义为繁忙期;用户在上班工作时间、晚间休息时间较少发布微博,则这些时间段即可被定义为空闲期。这样就获得了该名用户这一天内发布微博的行为特性,可据此设置出这一天的抓取周期,进而就可以利用设置的抓取周期预测下周同一天的抓取时间点,进行微博信息抓取。需要说明的是,在确定抓取周期的过程中,会影响抓取周期长短的因素至少可包含:每条历史微博的权重、用户的影响力(可通过粉丝数、被提及数体现)、用户发布微博的质量(可通过微博被转发数体现)、抓取资源(受抓取平台限制)等,此处不再展开详述。步骤103,如果所述待抓取微博用户为非活跃用户,则获取该待抓取微博用户的抓取状态以及剩余抓取用户量,如果所述抓取状态表示能进行微博信息抓取,且所述剩余抓取用户量不为零,则对所述待抓取微博用户进行微博信息抓取。如上文所述,非活跃用户所占数量很多,且这部分用户提供的微博信息量却很少,若采用步骤102的方式按照一定的抓取周期(固定周期或变周期)进行信息抓取的话,不仅会造成抓取资源的浪费,还可能导致抓取到的信息很有限,为此本发明提供了另外一种针对非活跃用户的抓取方案。首先,设置一个表示非活跃用户当前的抓取状态的抓取间隔,如2个月。在抓取间隔期间用户的抓取状态为不进行抓取,在抓取间隔到达时用户的抓取状态为可进行抓取。如,在06.12(可视为是该用户的抓取起始点)对某个非活跃用户进行了信息抓取,当在06.13判断是否需要对该用户进行信息抓取时,就可获知前一天刚刚抓取过该用户的微博信息,此时暂时还不需要再次对其进行信息抓取,也即该用户在06.13的抓取状态为不进行抓取,通过这样逐天(当然也可以其它时间单位逐次判断,本发明可不做限定)判断的方式类推,直至间隔2个月在08.12判断该用户的抓取状态为可进行抓取,再进行下一次信息抓取。其次,还要根据API权限设置一个限定每天的抓取上限的抓取用户量,也即每天可抓取多少名非活跃用户,如一千万非活跃用户。在设置好上述两个参数之后,即可判断当前是否能对待抓取微博用户进行信息抓取,具体过程为:判断待抓取微博用户的抓取状态是否为可进行抓取,如果是,则继续判断当前剩余的抓取用户量是否为零,如果否,则判定可对该待抓取微博用户进行信息抓取,在进行微博信息抓取的同时,还应将剩余抓取用户量减1,以保证后续其它非活跃用户的判断准确性。也就是说,针对非活跃用户而言,如果其抓取状态为不进行抓取,或者当前的剩余抓取用户量为零,均不对其进行信息抓取。需要说明的是,抓取用户量受限就可能导致一些抓取状态为可进行抓取的非活跃用户的微博信息无法被正常抓取到,对此,可以通过设置不同的抓取间隔或抓取起始点的方式,将众多的非活跃用户错开处理,如此就可利用有限的抓取资源处理尽量多的非活跃用户,提高抓取资源利用率以及抓取有效信息的效率。参见图3,示出了本发明确定用户类型的流程,可包括:步骤301,根据所述待抓取微博用户发布微博的频率确定用户活跃度。步骤302,根据预设活跃值与所述用户活跃度判断所述待抓取微博用户的类型,如果所述用户活跃度不小于所述预设活跃值,则判定所述待抓取微博用户为活跃用户;否则判定所述待抓取微博用户为非活跃用户。本发明主要是根据用户是否发布了微博以及发布微博的频繁程度确定用户活跃度的,如果用户未发布过微博,则直接将其定义为非活跃用户;如果用户发布过微博,还应再根据其发布微博的频率来确定其活跃度,具体可采用图4所示流程实现,包括:步骤401,根据所述待抓取微博用户发布的微博计算用户的平均发帖间隔;步骤402,从预设数据库中查找与所述平均发帖间隔相对应的活跃度。本实施例主要是通过发帖间隔来表示用户的发帖频率,进而反映用户的活跃度。具体实现时,可先建立一个保存有发帖间隔与活跃度对应关系的数据库,在计算获得用户的发帖间隔之后,即可通过查表的方式确定其对应的活跃度。需要说明的是,发帖间隔与活跃度可以一一对应,即一个发帖间隔对应一个活跃度;或者,发帖间隔与活跃度还可以是多对一,即多个发帖间隔对应一个活跃度,此时活跃度可视为是活跃等级,对此本发明可不做限定。在获得用户活跃度之后,即可与预设活跃值相比较,如果用户活跃度小于预设活跃值,则判定该用户为非活跃用户;如果用户活跃度大于或等于预设活跃值,则判定该用户为活跃用户。相应地,本发明还提供一种微博信息抓取装置,参见图5,示出了本发明微博信息抓取装置的示意图,所述装置可包括:第一获取单元501,用于获取待抓取微博用户;第一判断单元502,用于判断所述第一获取单元获取的待抓取微博用户的类型;计算单元503,用于在所述第一判断单元判定所述待抓取微博用户为活跃用户时,计算该待抓取微博用户的抓取周期;抓取单元504,用于根据所述抓取周期预测抓取时间点进行微博信息抓取;第二获取单元505,用户在所述第一判断单元判定所述待抓取微博用户为非活跃用户时,获取该待抓取微博用户的抓取状态以及剩余抓取用户量;所述抓取单元504,还用于在所述抓取状态表示能进行微博信息抓取,且所述剩余抓取用户量不为零时,对所述待抓取微博用户进行微博信息抓取。参见图6,示出了本发明中第一获取单元的示意图,可包括:选取单元601,用于选取至少一个认证用户作为种子用户,并将所述种子用户作为未处理用户添加到用户列表;第二判断单元602,用于判断所述未处理用户是否具有下级用户:第三获取单元603,用于在所述第二判断单元判定所述未处理用户具有下级用户时,获取该未处理用户的下级用户,添加单元604,用于将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;将所述下级用户作为未处理用户,通知所述第二判断单元602继续判断未处理用户是否具有下级用户;设置单元605,用于在所述第二判断单元判定所述未处理用户不具有下级用户时,则设置该未处理用户的状态为已处理。其中,第三获取单元可通过以下两种方式获取下级用户,具体为:通过所述未处理用户的用户关系网获取所述下级用户;或者,抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。参见图7,示出了本发明中第一判断单元的示意图,可包括:确定单元701,用于根据所述待抓取微博用户发布微博的频率确定用户活跃度;判断子单元702,用于根据预设活跃值与所述用户活跃度判断所述待抓取微博用户的类型,如果所述用户活跃度不小于所述预设活跃值,则判定所述待抓取微博用户为活跃用户;否则判定所述待抓取微博用户为非活跃用户。参见图8,示出了本发明中计算单元的示意图,可包括:计算子单元801,用于根据所述待抓取微博用户发布的微博计算用户的平均发帖间隔;查找单元802,用于从预设数据库中查找与所述平均发帖间隔相对应的活跃度。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1