基于Storm的产品评论信息实时采集方法

文档序号:10655232阅读:305来源:国知局
基于Storm的产品评论信息实时采集方法
【专利摘要】本发明公开了基于Storm的产品评论信息实时采集方法,该方法在基于Storm平台的采集系统进行,该方法包括产品抓取模块周期性的从网络中抓取数据,预处理模块根据产品Id初始化产品的属性参数,调度模块将数据封装成Tuple发射到Storm集群中,更新检测模块检查是否有新的评论产生,将其送到评论信息抓取模块,评论信息抓取模块检测到有评论信息更新的产品进行分布式抓取,访问间隔调整模块动态调整产品下一次采集的时间等。本发明将传统的网络爬虫与开源分布式流处理框架Storm相结合,使得传统的网络爬虫能够运行在流处理平台上,在实时信息采集性能上得到极大提高,具有很强的实际价值和现实意义。
【专利说明】
基于storm的产品评论信息实时采集方法
技术领域
[0001] 本发明属于网络信息处理技术领域,具体设及基于storm的产品评论信息实时采 集方法。
【背景技术】
[0002] 随着互联网用户数量的迅速增长,网络越来越成为人们生活中不可获取的一部 分,特别是电子商务的发展,改变了人们消费方式,使得人们的购物非常方便、快捷。消费者 不会再为独自一个人逛街而沮丧,不再为没有时间逛街买东西而烦恼,更不用为了挑一件 商品而东跑西跑。在电子商务的消费模式下,只需要一张银行卡,一台电脑,消费者可W买 到任何的东西,不需要很多的时间,不需要很多的劳力。为了给消费者提供更好的购物体 验,大多数电子商务网站为消费者提供相互交流的平台来发表其针对某件产品或服务的评 论,作为一种新型的口碑传播方式,产品的评论信息已经成为用户了解产品质量和服务的 重要信息来源,显然评论信息的好坏会对消费者的购买决策产生很大影响。此外,对于商家 及时的处理商品的负面评论信息和解决消费者反馈的问题,对保持商家的良好形象和商品 的销量显得尤为重要。因此,如何尽早的获取电商网站中产品的评论信息,进而实时的把握 商品舆情,无论对商家还是消费者都显得十分重要。
[0003] 然而,近些年来,实时信息采集的相关文献也并不少,但在要求准确的前提下去预 测产品下一次评论产生的时间是一个很困难的任务,目前并没有很好的预测模型和算法出 现。然而与实时抓取网页相关的研究领域有很多,比如预测网页的更新频率,方法大致分为 W下几类:
[0004] (1)基于泊松分布等数学模型来模拟网页的更新行为,该思想的提出到经历的研 究时间也比较长,但运很难有实质性的进展和突破,其次,该模型仅仅对粗粒度的时间预测 效果较好,而对于细粒度的时间预测效果比较差。
[0005] (2)用一个数学概率模型来模拟网页修改的行为,用该数学模型近似预测网页的 修改频率,但是用运种方式与网页行为拟合的准确率和稳定性都不是很高。
[0006] (3)A.K. Sharma等人提出了比较新的思想,不需要网页完整的历史记录,每次访问 网页后都会调整相应网页的下次更新时间,并根据不断的抓取积累起来的网页历史修改频 率的数据来对网页下一次更新时间进行预测,不足之处是过于关注网页的更新频率,而在 及时抓取新修改的网页方面细节考虑的不周。

【发明内容】

[0007] 本发明的目的在于提供一种基于storm的产品评论信息实时采集方法,W提高实 时采集的准确率和稳定性。
[000引为实现上述目的,本发明采用W下技术方案:
[0009]本发明公开了基于storm的产品评论信息实时采集方法,该方法在基于storm平台 的采集系统进行,所述的采集系统包括产品抓取模块、预处理模块、调度模块、更新检测模 块、评论信息抓取模块、皿as e数据存储模块、访问间隔调整模块;该方法包括:
[0010] a.产品抓取模块由时间触发服务器激活,周期性的从网络中抓取数据,获取产品 的属性参数并存入到皿ase数据存储模块中,同时检查新抓取到的产品属性Id是否已经存 在待爬队列,如果已经存在则忽略,否则将其送到产品预处理模块进行预处理。
[0011] b.预处理模块根据产品Id初始化产品的属性参数,将初始化后的产品Id经过url 链接优化处理后放入待爬队列fetche;r_queue。
[0012] C.调度模块不断的从fetche;r_queue队列中读取数据,并将数据封装成化pie发射 Storm集群中。
[0013] d.更新检测模块检查是否有新的评论产生,如果该产品有新评论产生,就将其送 到评论信息抓取模块。
[0014] e.评论信息抓取模块对更新检测模块检测到有评论信息更新的产品进行分布式 抓取。
[0015] f.访问间隔调整模块动态调整产品下一次采集的时间,然后将其重新放入待爬队 列 fetcher-queue 中。
[0016] 进一步地,所述的访问间隔调整模块调整产品下一次采集的时间,包括W下步骤:
[0017] Sl.获取产品历史最小更新频率fi、最大更新频率fuW及采集间隔interval。
[0018] S2.获取产品当前的采集次数nt、评论信息发生更新次数nc,计算出产品当前的更 新步页率f C = HcAlt。
[0019] S3.根据下列公式来调整产品的采集间隔interval,
[0020] next-interval = Interval+ A t(公式 1)
[0021]
[0022]
[0023] S4.通过产品当前的评论量n、最近一次评论信息产生的时间间隔tiW及最近一次 采集的产品评论信息的最大滞后时间t2作为其优先级量化因子,分别对n、ti、t2做0~1区间 的归一化操作,按下式计算该产品此时的优先级P,重新放入待爬队列f etche;r_queue;
[0024]
(公武苗。
[0025] 优选地,预处理模块对产品进行预处理的步骤如下:
[0026] SI.获取产品当前的评论总数和最近一次评论时间,根据评论总数和最近一次评 论初始化其采集间隔interval。
[0027] S2.初始化产品的最大更新频率f U和最小更新频率fi,将产品Id经过url链接优化 模块进行处理,然后将该产品的采集间隔和优化过的url链接放入频率初始化队列 打equency_init_queue;只要frequency_init_queue不为空,频率初始化爬虫打eCrawer即 W该产品的采集间隔对该产品进行500次的采集,并记录共发生更新的次数n。,采集结束 后,计算其更新频率f c = nc/500,并用f C初始化产品的最大更新频率fu和最小更新频率f 1。
[0028] S3.将预处理过后的产品Id经过url链接优化模块处理后放入待爬队列fetcher_ queue O
[0029] 优选地,更新检测模块获取产品最新的评论总数current_total,然后和产品的历 史评论总数OlcLtotal对比,如果大于历史评论总数,则更新产品的历史评论总数、采集次 数、评论信息发生更新次数W及最近一次采集时间,并将该产品发送给评论信息抓取模块 进行评论信息采集,否则只更新产品的采集次数和最近一次采集时间。
[0030] 优选地,所述的评论信息抓取模块分布式抓取的步骤如下:
[0031 ] 81.获取该产品的最近一次评论时间'6。6111:_(301111116]113_1:;[1116;
[0032] S2.根据更新检测模块的检测的结果,下载相应页数的评论信息;
[0033] S3.对下载的评论信息做进一步的清洗,找出对产品做出的最近一次评论时间,并 更新该产品最近一次评论时间;
[0034] S4.将抓取的新的产品评论信息发送到皿ase数据存储模块进行存储。
[0035] 采用上述技术方案后,本发明的有益效果在于:本发明将传统的网络爬虫与开源 分布式流处理框架一Storm相结合,充分利用Storm分布式、高度容错性、无数据丢失、可扩 展性强W及实时处理等优势,并通过动态调整采集时间间隔算法和采集调度策略分别对采 集时间点和采集调度顺序做了进一步优化,运样既减少了爬虫的网络请求次数,而且还使 得每次请求更合理、有效,最后通过测试分析Storm集群的吞吐量和处理延迟等性能,结果 验证了 Storm能够胜任对实时性要求较高场景下的网络数据采集任务。
【附图说明】
[0036] 图1为本发明流程架构图。
[0037] 图2为本发明评论信息分布式抓取架构图。 具体实施方案
[0038] 为了使本发明的目的、技术方案及优点更加清楚明白,W下结合附图和实施例,对 本发明进行进一步详细说明。
[0039] 如图1所示,本发明公开了基于Storm的产品评论信息实时采集方法。本发明方法 在基于Storm平台的采集系统进行,采集系统包括产品抓取模块、预处理模块、调度模块、更 新检测模块、评论信息抓取模块、皿ase数据存储模块、访问间隔调整模块,W下对该系统进 行评论信息实时采集方法进行详述:
[0040] a.产品抓取模块
[0041] 由时间触发服务器激活,周期性的从网络中抓取数据,获取产品的属性参数并存 入到皿ase数据存储模块中,同时检查新抓取到的产品属性Id是否已经存在待爬队列,如果 已经存在则忽略,否则将其送到产品预处理模块进行预处理。
[0042] b.预处理模块
[0043] 根据产品Id初始化产品的属性参数,将初始化后的产品Id经过url链接优化处理 后放入待爬队列fetche;r_queue,其中待爬队列fetche;r_queue是Beansta化d队列中的一个 管道。具体步骤如下:
[0044] SI.获取产品当前的评论总数和最近一次评论时间,根据评论总数和最近一次评 论初始化其采集间隔interval。
[0045] S2.初始化产品的最大更新频率f U和最小更新频率fi,将产品Id经过url链接优化 模块进行处理,然后将该产品的采集间隔和优化过的url链接放入频率初始化队列 打equency_init_queue;只要frequency_init_queue不为空,频率初始化爬虫打eCrawer即 W该产品的采集间隔对该产品进行500次的采集,并记录共发生更新的次数n。,采集结束 后,计算其更新频率f c = nc/500,并用f C初始化产品的最大更新频率fu和最小更新频率f 1。
[0046] S3.将预处理过后的产品Id经过url链接优化模块处理后放入待爬队列fetcher_ queue O
[0047] c.调度模块
[0048] 该模块主要负责采集系统中产品的采集顺序。由于该采集系统是基于Storm平台 的,而Storm作为实时的流处理平台,只有源源不断的为它提供数据,它才能正常工作, Spout作为Storm的核屯、组件,它负责向Storm集群中发射数据流,因此,该模块会不断的被 Spout调用,从而不断的从fetche;r_queue队列中读取数据,并将数据封装成化pie发射到 Storm集群中。
[0049] d.更新检测模块
[0050] 该模块主要是用来检测产品是否有新的评论产生。它根据产品的一些采集参数来 判断产品是否有新的评论产生,如果该产品有新评论产生,就将其送到评论信息抓取模块: 更新检测模块获取产品最新的评论总数cu;rrent_total,然后和产品的历史评论总数old_ total对比,如果大于历史评论总数,则更新产品的历史评论总数、采集次数、评论信息发生 更新次数W及最近一次采集时间,并将该产品发送给评论信息抓取模块进行评论信息采 集,否则只更新产品的采集次数和最近一次采集时间。
[0051] e.评论信息抓取模块
[0052] 该模块是整个采集系统的核屯、。该模块对更新检测模块检测到有评论信息更新的 产品进行分布式抓取。由于它运行在Storm集群中,因此,可W实现对产品评论信息的分布 式抓取,分布式爬虫架构图如图2所示,架构图中评论信息抓取模块包含下面组件:
[0053] (1 )Nimbus: Storm集群中的控制节点,负责Storm集群中资源分配和任务调度。
[0054] ^Supervisor:Storm集群中的工作节点,负责接受Nimbus分配的任务,启动和停 止属于自己管理的worker进程。
[005日](3) Worker: Storm集群中运行具体处理逻辑的进程。
[0化6] (4化xecutor:同一个spout/bolt的task可能会共享一个物理线程,该线程称为 Executor。
[0化7] (5)Task: worker 中每一个 spout/bolt的线程称为一个 1:ask。
[0化引 (G)Zooke邱er:是负责nimbus和supervisor之间协调的服务。
[0059] (7)皿ase:负责产品评论信息的存储。
[0060] 评论信息抓取模块分布式抓取的步骤如下:
[0061 ] Sl.获取该产品的最近一次评论时间recent_comments_time。
[0062] S2.根据更新检测模块的检测的结果,下载相应页数的评论信息。
[0063] S3.对下载的评论信息做进一步的清洗,找出对产品做出的最近一次评论时间,并 更新该产品最近一次评论时间。
[0064] S4.将抓取的新的产品评论信息发送到皿ase数据存储模块进行存储。
[0065] f.访问间隔调整模块
[0066] 该模块动态调整产品下一次采集的时间,然后将其重新放入待爬队列fetcher_ queue中。包括W下步骤:
[0067] Sl.获取产品历史最小更新频率fi、最大更新频率fuW及采集间隔interval。
[0068] S2.获取产品当前的采集次数nt、评论信息发生更新次数nc,计算出产品当前的更 新步页率f C = HcAlt。
[0069] S3.根据公式1、公式2来调整产品的采集间隔interval。
[0070] next-interval = Interval+ A t(公式 1)
[0071]
[0072]
[0073] 通过上面公式1、公式2分析可W发现对产品采集间隔的调整具体可W分为W下= 种情况:
[0074] (1).如果当前计算的评论信息产生频率fc介于下界fi和上界fu之间,无需调整,此 时 At = Oo
[0075] (2).如果当前计算的评论信息产生频率f。小于下界fi,说明产品产生评论信息的 频率变慢了,与历史采集间隔相比需要增加,此时A t〉0,并重新设置下界fi和产品的采集 间隔。
[0076] (3).如果当前计算的评论信息产生频率fc大于上界fu,说明产品产生评论信息的 频率变快了,与历史采集间隔相比需要减少,此时A t<0,并重新设置上界fu和产品的采集 间隔。
[0077] S4.通过产品当前的评论量n、最近一次评论信息产生的时间间隔tiW及最近一次 采集的产品评论信息的最大滞后时间t2作为其优先级量化因子,分别对n、ti、t2做0~1区间 的归一化操作,按公式3计算该产品此时的优先级P,重新放入待爬队列fetche;r_queue。
[007引
(忿式巧
[00巧]e.皿ase数据存储模块
[0080] 该模块主要配合各模块的运行中对解析到的数据进行存储。数据传统的关系型数 据库对海量数据存储已经表现出乏力,因此,本发明采用新型的非关系数据库皿ase来存储 产品的基本属性和产品的评论信息。
[0081] 综上,本发明基于Storm的产品评论信息实时采集方法将传统的网络爬虫与开源 分布式流处理框架一Storm相结合,动态调整采集时间间隔和采集调度策略,提高了实时采 集的准确率和稳定性。
[0082] W上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明掲露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。
【主权项】
1. 基于Storm的产品评论信息实时采集方法,其特征在于:该方法在基于Storm平台的 采集系统进行,所述的采集系统包括产品抓取模块、预处理模块、调度模块、更新检测模块、 评论信息抓取模块、HBas e数据存储模块、访问间隔调整模块;该方法包括: a. 产品抓取模块由时间触发服务器激活,周期性的从网络中抓取数据,获取产品的属 性参数并存入到HBase数据存储模块中,同时检查新抓取到的产品属性Id是否已经存在待 爬队列,如果已经存在则忽略,否则将其送到产品预处理模块进行预处理; b. 预处理模块根据产品Id初始化产品的属性参数,将初始化后的产品Id经过url链接 优化处理后放入待爬队列f etcher_queue; c. 调度模块不断的从fetcher_queue队列中读取数据,并将数据封装成Tuple发射到 Storm集群中; d. 更新检测模块检查是否有新的评论产生,如果该产品有新评论产生,就将其送到评 论信息抓取模块; e. 评论信息抓取模块对更新检测模块检测到有评论信息更新的产品进行分布式抓取; f. 访问间隔调整模块动态调整产品下一次采集的时间,然后将其重新放入待爬队列 fetcher_queue 中。2. 如权利要求1所述的基于Storm的产品评论信息实时采集方法,其特征在于:所述的 访问间隔调整模块调整产品下一次采集的时间,包括以下步骤:51. 获取产品历史最小更新频率fi、最大更新频率fu以及采集间隔interval;52. 获取产品当前的采集次数nt、评论信息发生更新次数n。,计算出产品当前的更新频 率 fc = nc/nt;53. 根据下列公式来调整产品的采集间隔i n t er va 1,54. 通过产品当前的评论量n、最近一次评论信息产生的时间间隔t以及最近一次采集 的产品评论信息的最大滞后时间〖2作为其优先级量化因子,分别对~1区间的归 一化操作,按下式计算该产品此时的优先级P,重新放入待爬队列f etcher_queue;(公式3)。3. 如权利要求2所述的基于Storm的产品评论信息实时采集方法,其特征在于,预处理 模块对产品进行预处理的步骤如下: SI.获取产品当前的评论总数和最近一次评论时间,根据评论总数和最近一次评论初 始化其采集间隔interval; S2 .初始化产品的最大更新频率fu和最小更新频率f 1,将产品Id经过url链接优化模块 进行处理,然后将该产品的采集间隔和优化过的url链接放入频率初始化队列frequency_ init_queue;只要frequency_init_queue不为空,频率初始化爬虫freCrawer即以该产品的 采集间隔对该产品进行500次的采集,并记录共发生更新的次数n。,采集结束后,计算其更 新频率£。= 1!。/500,并用£。初始化产品的最大更新频率匕和最小更新频率€1; S3 .将预处理过后的产品Id经过url链接优化模块处理后放入待爬队列f etcher_ queue〇4. 如权利要求3所述的基于Storm的产品评论信息实时采集方法,其特征在于,更新检 测模块获取产品最新的评论总数current_total,然后和产品的历史评论总数old_total对 比,如果大于历史评论总数,则更新产品的历史评论总数、采集次数、评论信息发生更新次 数以及最近一次采集时间,并将该产品发送给评论信息抓取模块进行评论信息采集,否则 只更新产品的采集次数和最近一次采集时间。5. 如权利要求4所述的基于Storm的产品评论信息实时采集方法,其特征在于,所述的 评论信息抓取模块分布式抓取的步骤如下:51. 获取该产品的最近一次评论时间recent_comments_time;52. 根据更新检测模块的检测的结果,下载相应页数的评论信息;53. 对下载的评论信息做进一步的清洗,找出对产品做出的最近一次评论时间,并更新 该产品最近一次评论时间;54. 将抓取的新的产品评论信息发送到HBase数据存储模块进行存储。
【文档编号】G06F17/30GK106021391SQ201610313091
【公开日】2016年10月12日
【申请日】2016年5月11日
【发明人】郝志峰, 骆魁永, 蔡瑞初, 陈炳丰, 袁琴
【申请人】广东工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1