一种基于重做日志的分布式商品信息爬虫方法技术

技术编号:14015993 阅读:119 留言:0更新日期:2016-11-18 01:03
本发明专利技术公开了一种基于重做日志的分布式商品信息爬虫方法,包括:从数据库中读取配置来生成爬虫任务,定义三种爬虫的重做日志记录格式,执行商品搜索爬虫,在电商网站的搜索结果页中提取商品列表并生成商品信息任务和商品评论任务;把商品信息任务和商品评论任务再分配到各个服务器上,执行商品信息爬虫采集并保存商品的各种属性数据,执行商品评论爬虫采集并保存商品的评论数据;重做日志会记录采集失败的任务和状态;定时从重做日志中取出日志,反序列化为爬虫任务进行重新爬取。本发明专利技术的基于重做日志的分布式商品信息爬虫方法,能够针对电商网站的商品数据和评论数据的爬取,有效地提高数据采集的效率和完善性。

【技术实现步骤摘要】

本专利技术涉及互联网领域,具体涉及一种基于重做日志的分布式商品信息爬虫方法
技术介绍
近十年来,随着互联网Web 2.0的快速发展,特别是移动互联网的兴起,国内出现了大量的移动应用和电商网站。人们可以很便捷地通过计算机、智能手机、平板电脑等途径对商品或商铺进行评价。而对这些海量的产品评论进行处理和挖掘,可以获取很多有价值的信息。对于商家而言,他们可以利用这些信息来获取自己与竞争对手的产品情况,并指导改进产品的质量和服务水平,从而在激烈的竞争中占据优势,而对于用户而言,用户可以通过这些信息更加方便地了解各种产品的优缺点,决定是否购买。但是,随着时间的推移,互联网上商品或商铺评论数目会不断增加,一个商品可能有成千上万的评论。即使平台本身会对用户评论中的评分进行汇总,用户还是要花一定时间和精力去浏览各种品牌商品的几十页评论,才能得出同类产品的客观评价。另一方面,商家依靠人工归纳汇总,也难以在短时间内在大量的评论里获取有价值的信息。一个商家通常会在各个平台上架自己的产品,而各个平台的数据本身是独立的,商家也很难通过人工的方式汇总各个平台的评论数据,从而难以基于大量的数据进行有效分析。现在的网络爬虫主要有两类:通用爬虫和定向爬虫。通用爬虫主要用于互联网搜索引擎采集网站的数据,一般是提供URL种子进行采集,再在采集的网页中获取新的URL,不断迭代采集,但是这种方法不适用于商品信息爬虫。定向爬虫,主要用于采集定向的数据。一般是根据一定的规则获取一些URL,例如通过电商网站本身的搜索引擎和关键字来获取搜索结果和URL,然后再对这些URL进行采集并解析数据成结构化数据。由于定向爬虫获取数据的目标一般是垂直网站、电商网站和论坛网站,而这些网站一般会有反爬虫策略。特别是电商网站,具有用户行为检测、IP黑名单等多种反爬虫策略。而且一个商品信息涉及的数据维度很多,各个维度的数据由多个URL的网页数据组成。这种的情况下,通过简单的电商爬虫采集几十万级别的商品结构化数据、亿级别数量的评论文本数据是一件十分困难的事情。如果定向爬虫并发很大,在代理IP的数量不够多或者上传速度带宽不够大的情况下访问页面时,会出现大量连接超时,无法保证商品信息采集的完整性和准确性。易造成大部分的商品信息缺失,后续的数据分析必然是不准确的。另外,一些爬虫方案采用不断重试请求失败的URL来提高完整性和准确性,但不断重试爬虫会导致短时间内多次重复请求部分URL。通常这种行为会导致当前请求IP进入电商网站的IP黑名单,从而浪费时间和资源。还有一些爬虫方案通过把失败的商品任务重新放入任务队列来实现重新获取,但是这样的方案也带来了问题。获取多个维度的结构化数据时,必然有部分商品属性已经采集成功、部分商品属性仍然失败。这种只有一个或一个以上商品属性获取失败就需要将商品重新放入重做队列,显然是浪费了资源和时间。因此现有的任务调度策略还是比较简单,难以应对定向爬虫扩展性问题。
技术实现思路
为了克服现有电商网站爬虫在并发采集多个维度的商品信息时,产生请求失败而导致商品信息的不完整问题及克服重新采集不完整的商品信息时,部分URL重复请求导致的资源和效率问题,本专利技术提供一种基于重做日志的分布式商品信息爬虫方法。本专利技术采用如下技术方案:一种基于重做日志的分布式商品信息爬虫方法,包括:通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务,定义搜索爬虫重做日记记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;将多个商品搜索爬虫任务分配到各台服务器上执行,通过爬取电商网站本身的搜索引擎搜索关键字得到的商品列表,进一步获得商品信息爬虫任务及商品评价爬虫任务;服务器执行商品信息爬虫任务及商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性和商品的评论数据;使用重做日志实时记录当前服务器在执行商品搜索爬虫任务、商品信息爬虫任务及商品评价爬虫任务时,由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID;通过定时启动重做任务读取日志记录,重新执行之前失败的爬虫任务。通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务;具体为:所述配置任务数据库,包括爬虫任务表,包括爬虫任务ID及任务名称;爬虫子任务表,包括子任务ID、商品类型、关键字、过滤关键字及任务ID;爬虫任务配置表,包括配置ID、爬虫ID、搜索关键字、对应子任务ID;爬虫实例表,包含爬虫ID、电商平台搜索爬虫类的类名、商品信息爬虫类的类名、商品评论爬虫类的类名、数据导出类的类名;读取配置任务得到多个商品搜索爬虫任务:从爬虫任务表读取一个爬虫任务,根据任务的任务ID在爬虫子任务表读取与任务ID相关子任务,然后根据每一个子任务读取它在爬虫任务配置表的所有任务配置,最后根据任务配置的爬虫ID在爬虫实例表取出执行电商平台搜索爬虫类的类名,从而生成商品搜索爬虫任务。服务器执行商品信息爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性数据;执行商品信息爬虫任务:把商品信息的各个属性所在的URL,按照其数据依赖关系构成一个URL爬虫类的类名的有向无环图,其中点表示URL爬虫类的类名,边表示URL爬虫类的类名之间的数据依赖关系;对有向无环图进行拓扑排序得到URL爬虫类的类名执行序列,设每一个序列的初始状态为“未采集”;商品信息爬虫按照序列顺序采集每个URL页面,对于一个URL,先在有向无环图里查询它依赖的所有URL爬虫类的类名状态是否都标记为“已采集”;若不是,则跳过这个URL爬虫类的类名;若是,则进行采集这个URL,采集成功则修改当前URL爬虫类的类名的采集状态为“已采集”并提取出信息需要的维度;采集失败,不修改当前状态,继续执行下一个URL,依次地遍历完这个URL序列。服务器执行商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品评论数据;具体为:执行商品评价爬虫任务,获得商品评论的主页URL,对于主页URL依次附加一个递增的页码,通过商品评论爬虫类进行评论数据的采集,当评论数据中的时间小于配置的开始时间则停止采集,对于当前一个页码对应的URL,若采集成功,则相应的评论数据存入数据库里。使用重做日志实时记录当前服务器执行爬虫任务时由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID,具体步骤为:对于网络请求失败的商品搜索爬虫任务,根据商品搜索爬虫重做日志记录格式来生成搜索爬虫重做日志记录,保存到日志中;对于网络请求失败的商品信息爬虫任务,根据商品信息爬虫重做日志记录格式来生成商品信息爬虫重做日志,保存到日志中;对于网络请求失败的商品评论爬虫任务,根据商品评论重做日志记录格式来生成商品评论重做日志,保存到日志中。通过定时启动重做任务读取重做日志记录,重新执行之前失败的爬虫任务,具体包括:商品搜索爬虫定时重做任务模块,每隔30分钟在商品搜索重做日志里取出10条的日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化为商品搜索爬虫任务需要的上下文数据、失败的页码,根据日志记录的搜索爬虫类的类名通过类反射生成爬虫实例,并重新执行商品搜索爬虫进行采本文档来自技高网
...
一种基于重做日志的分布式商品信息爬虫方法

【技术保护点】
一种基于重做日志的分布式商品信息爬虫方法,其特征在于,包括:通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务,定义搜索爬虫重做日记记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;将多个商品搜索爬虫任务分配到各台服务器上执行,通过爬取电商网站本身的搜索引擎搜索关键字得到的商品列表,进一步获得商品信息爬虫任务及商品评价爬虫任务;服务器执行商品信息爬虫任务及商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性和商品的评论数据;使用重做日志实时记录当前服务器在执行商品搜索爬虫任务、商品信息爬虫任务及商品评价爬虫任务时,由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID;通过定时启动重做任务读取日志记录,重新执行之前失败的爬虫任务。

【技术特征摘要】
1.一种基于重做日志的分布式商品信息爬虫方法,其特征在于,包括:通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务,定义搜索爬虫重做日记记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;将多个商品搜索爬虫任务分配到各台服务器上执行,通过爬取电商网站本身的搜索引擎搜索关键字得到的商品列表,进一步获得商品信息爬虫任务及商品评价爬虫任务;服务器执行商品信息爬虫任务及商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性和商品的评论数据;使用重做日志实时记录当前服务器在执行商品搜索爬虫任务、商品信息爬虫任务及商品评价爬虫任务时,由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID;通过定时启动重做任务读取日志记录,重新执行之前失败的爬虫任务。2.根据权利要求1所述的分布式商品信息爬虫方法,其特征在于,通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务;具体为:所述配置任务数据库,包括爬虫任务表,包括爬虫任务ID及任务名称;爬虫子任务表,包括子任务ID、商品类型、关键字、过滤关键字及任务ID;爬虫任务配置表,包括配置ID、爬虫ID、搜索关键字、对应子任务ID;爬虫实例表,包含爬虫ID、电商平台搜索爬虫类的类名、商品信息爬虫类的类名、商品评论爬虫类的类名、数据导出类的类名;读取配置任务得到多个商品搜索爬虫任务:从爬虫任务表读取一个爬虫任务,根据任务的任务ID在爬虫子任务表读取与任务ID相关子任务,然后根据每一个子任务读取它在爬虫任务配置表的所有任务配置,最后根据任务配置的爬虫ID在爬虫实例表取出执行电商平台搜索爬虫类的类名,从而生成商品搜索爬虫任务。3.根据权利要求1所述的分布式商品信息爬虫方法,其特征在于,服务器执行商品信息爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性数据;执行商品信息爬虫任务:把商品信息的各个属性所在的URL,按照其数据依赖关系构成一个URL爬虫类的类名的有向无环图,其中点表示URL爬虫类的类名,边表示URL爬虫类的类名之间的数据依赖关系;对有向无环图进行拓扑排序得到URL爬虫类的类名执行序列,设每一个序列的初始状态为“未采集”;商品信息爬虫按照序列顺序采集每个URL页面,对于一个URL,先在有向无环图里查询它依赖的所有URL爬虫类的类名状态是否都标记为“已采集”;若不是,则跳过这个URL爬虫类的类名;若是,则进行采集这个URL,采集成功则修改当前URL爬虫类的类名的采集状态为“已采集”并提取出信息需要的维度;采集失败,不修改当前状态,继续执行下一个URL,依次地遍历完这个URL序列。4.根据权利要求1所述的分布式商品信息爬虫方法,其特征在于,服务器执行商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品评论数据;具体为:执行商品评价爬虫任务,获得商品评论的主页URL,对于主页URL依次附加一个递增的页码,通过商品评论爬虫类进行评论数据的采集,当评论数据中...

【专利技术属性】
技术研发人员:董守玲陈海棋董守斌
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1