CN106126648B - 一种基于重做日志的分布式商品信息爬虫方法 - Google Patents

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

Info

Publication number
CN106126648B
CN106126648B CN201610472048.1A CN201610472048A CN106126648B CN 106126648 B CN106126648 B CN 106126648B CN 201610472048 A CN201610472048 A CN 201610472048A CN 106126648 B CN106126648 B CN 106126648B
Authority
CN
China
Prior art keywords
crawler
task
commodity
log
merchandise news
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.)
Expired - Fee Related
Application number
CN201610472048.1A
Other languages
English (en)
Other versions
CN106126648A (zh
Inventor
董守玲
陈海棋
董守斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201610472048.1A priority Critical patent/CN106126648B/zh
Publication of CN106126648A publication Critical patent/CN106126648A/zh
Application granted granted Critical
Publication of CN106126648B publication Critical patent/CN106126648B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0623Item investigation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种基于重做日志的分布式商品信息爬虫方法
技术领域
本发明涉及互联网领域,具体涉及一种基于重做日志的分布式商品信息爬虫方法。
背景技术
近十年来,随着互联网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条的日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化为商品搜索爬虫任务需要的上下文数据、失败的页码,根据日志记录的搜索爬虫类的类名通过类反射生成爬虫实例,并重新执行商品搜索爬虫进行采集;
商品信息爬虫定时重做任务模块,每隔10分钟商品信息重做日志里取出1000条日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化为商品信息、URL爬虫类的类名数据依赖的有向无环图、URL爬虫类的类名执行序列和状态,然后重新执行商品爬虫任务;
商品评论爬虫定时重做任务模块,每隔5分钟在商品评论重做日志里取出1000条日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化页码、商品评论爬虫类的类名和商品评论爬虫任务中需要的上下文数据,通过这些数据执行商品评论爬虫采集商品评论。
定义了三种重做日志记录格式,分别是搜索爬虫重做日志记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;
搜索爬虫重做日志记录包含日志类型、任务ID表示爬虫任务的ID、电商平台搜索爬虫类的类名、电商平台搜索爬虫执行过程中请求失败的页码数组、数据上下文;
商品信息爬虫重做日志记录包含日志类型、任务ID、商品信息属性所在URL页面对应的爬虫实现类的类名数组、商品信息各个属性所在URL页面的采集状态组成的数组、商品信息属性所在URL页面之间数据依赖组成的数组、数据上下文、商品信息对象Json序列化后的字符串;
商品评论重做日志记录包含日志类型、任务ID、商品评论爬虫类的类名、商品评论爬虫执行过程中请求失败的页码数组、数据上下文。
每个商品搜索爬虫任务包含搜索关键字、搜索过滤词、电商网站本身提供搜索引擎页面的URL及其对应抓取内容和解析内容的爬虫实现方法,所述解析内容的爬虫实现方法包含电商平台搜索爬虫类的类名、商品信息爬虫实现类的类名、商品评论爬虫类的类名和数据导出实现类的类名。
本发明的有益效果:
本发明的基于重做日志的分布式商品信息爬虫方法,用重做日志的方式记录当前需要重新采集的URL及其需要的中间数据。使得执行失败的商品信息的采集任务只需要重新采集部分记录为“未采集”的URL而不需要重新采集已标记为“已采集”的URL,而且通过分发日志和任务到各台服务器执行来对采集任务和重新日志任务并行化,提高了数据采集的效率、完成整和准确性,减少了***的资源浪费。
附图说明
图1为本发明实施方式的商品爬虫任务配置表关系图;
图2为本发明实施方式的商品属性URL的依赖关系与拓扑排序后执行序列;
图3是本发明的工作流程图。
具体实施方式
下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例
如图3所示,一种基于重做日志的分布式商品信息爬虫方法,包括:
步骤一,如图1所示,配置爬虫任务:通过数据库的任务配置表来调度爬虫。
任务配置表包括:爬虫任务表,包含任务ID、任务名称;
爬虫子任务表包含子任务ID、商品类型、包含关键字、过滤关键字、任务ID;爬虫任务配置表,包含配置ID、爬虫ID、搜索关键字、对应子任务ID;
爬虫实例表,包含:爬虫ID、电商平台搜索爬虫类的类名、商品信息爬虫类的类名、商品评论爬虫类的类名、数据导出类的类名。
读取爬虫任务:从爬虫任务表读取一个爬虫任务,根据任务的任务ID在爬虫子任务表读取与任务ID相关子任务。然后根据每一个子任务读取它在爬虫任务配置表的所有任务配置。最后根据任务配置的爬虫ID在爬虫实例表取出执行电商平台搜索爬虫类的类名,从而生成商品搜索爬虫任务。每个商品搜索爬虫任务包含搜索关键字、搜索过滤词、电商网站本身提供搜索引擎页面的URL及其对应抓取内容和解析内容的爬虫实现方法。其中实现方法包含电商平台搜索爬虫类的类名、商品信息爬虫实现类的类名、商品评论爬虫类的类名和数据导出实现类的类名。
步骤二,重做日志记录的格式:定义以下几种基本类型:Byte:表示字符,占8bit;UInt32:表示整数,占4个Byte;UInt32Array:表示UInt32数组,用一个UInt32表示数组长度,多个UInt32来表示数组元素;String:表示字符串,用一个UInt32表示字符串包含的字符个数,多个Byte表示字符串的字符;StringArray:字符串数组,用一个UInt32表示数组长度,多个String表示数组中的字符串;Map:表示Key为String,Value为String的映射,用一个UInt32表示Key-Value对的个数,用String\0String表示每一个Key-Value对。
所述三种重做日志记录格式,分别是搜索爬虫重做日志记录格式、商品信息爬虫重做日志记录格式、商品评论重做日志记录格式。当爬虫实例网络请求失败,爬虫实例会按这些格式把当前执行的上下文和中间结果保存到日志中。
如表1所示,搜索爬虫重做日志记录包含日志类型、任务ID表示爬虫任务的ID、电商平台搜索爬虫类的类名、电商平台搜索爬虫执行过程中请求失败的页码数组及数据上下文。
例如一条搜索爬虫重做日志记录:
“0x1|4023|com.xxx.crawler.urlsearcher|1#4#15#22|skuId\032156\0category\0平板电视”
表示任务ID为4023的搜索爬虫任务下的重做日志,通过com.xxx.crawler.urlsearcher电商平台搜索爬虫类的类名反射生成爬虫实例来进行页面的请求和解析,请求失败的页码有1、4、15、22,请求和解析数据需要用到的上下文数据为{"skuId":"32156","category":"平板电视"}。
表1搜索爬虫重做日志记录格式
如表2所示,商品信息爬虫重做日志记录包含日志类型、任务ID、商品信息属性所在URL页面对应的爬虫实现类的类名数组、商品信息各个属性所在URL页面的采集状态组成的数组(数据元素值为1表示已经采集,0表示未采集)、商品信息属性所在URL页面之间数据依赖组成的数组(数据元素值由两个数字组成,后一个数字对应的商品信息属性所在URL页面要在前一个数字对应的商品信息属性所在URL页面状态为“已采集”之后才能开始采集)、数据上下文、商品信息对象Json序列化后的字符串。
例如一条商品信息爬虫重做日志记录:
“0x2|4325|com.xxx.indexUrl,com.xxx.saleUrl,com.xxx.commentUrl,com.xxx.shopUrl|1011|14,13,42|skuId\032156\0category\0平板电视
|{skuId:32156,category:平板电视,cntBest:3132,cntGood:79,cntBad:90,brand:康佳,model:LED58S1}”
表示任务ID为4325的商品信息爬虫任务,需要执行的爬虫类为com.xxx.indexUr,com.xxx.saleUrl,com.xxx.commentUrl,com.xxx.shopUrl。其中com.xxx.indexUrl、com.xxx.commentUrl,com.xxx.shopUrl请求和解释数据成功,com.xxx.saleUrl请求失败。
com.xxx.commentUrl,com.xxx.shopU依赖于com.xxx.indexUrl,com.xxx.saleUrl依赖于com.xxx.shopUrl。请求和解析数据需要用到的上下文数据为{skuId:32156,category:平板电视}。已经获取的商品结构化信息为{skuId:32156,category:平板电视,cntBest:3132,cntGood:79,cntBad:90,brand:康佳,model:LED58S1},但缺少saleCount属性,需要执行重做日志的com.xxx.saleUrl才能补完数据。
表2商品信息爬虫重做日志记录格式
如表3所示,商品评论重做日志记录包含日志类型、任务ID、商品评论爬虫类的类名、商品评论爬虫执行过程中请求失败的页码数组、数据上下文。
例如一条商品评论重做日志记录:
“0x3|4356|com.xxx.commentCrawler|23#54#67#107|skuId\032156\0category\0平板电视”。
表示为任务ID为4356的商品评论任务,请求页面和解释数据由商品评论爬虫类的类名com.xxx.commentCrawler反射实例爬后的虫对象执行。当前采集失败的评论页码为23、54、67、107,重做任务需要重新请求页码的数据来保证数据获取是完整的。组成一条评论结构化数据需要的上下文为{skuId:32156,category:平板电视"}。
表3商品评论重做日志记录格式
步骤三,爬虫执行:读取配置表生成多个搜索爬虫任务,把商品搜索爬虫任务分发到多个服务器上执行。
商品搜索爬虫任务把搜索关键字和电商网站提供的搜索引擎页面URL结连接成SearchURL。通过爬虫搜索实例对这个SearchURL爬取,获取到指定关键字下的搜索结果页数。对这个SearchURL进行分页采集商品列表。如果分页采集成功,则把得到商品列表通过过滤关键词对商品标题进行过滤,生成商品信息爬虫任务和商品评论爬虫任务,再把商品信息爬虫任务和商品评论爬虫任务分发到多个服务器上执行。如果分页采集失败,则把商品搜索爬虫任务需要的任务ID、数据上下文、失败的页码、当前电商平台搜索爬虫类的类名合并成一个日志记录,放到商品搜索重做日志队列。
步骤四,执行商品信息爬虫任务,商品信息爬虫任务先访问商品主页面URL,通过商品信息爬虫类实例解析得到的页面里包含商品的部分维度的数据和包含其他维度的URL。先把商品信息的部分维度在页面中进行提取。再把包含其他维度的URL按其数据依赖关系构成一个如图2所示的URL爬虫类的类名的有向无环图,其中这个图里的点表示URL爬虫类的类名,边表示URL爬虫类的类名之间的数据依赖关系。对这个图进行拓扑排序得到一个URL爬虫类的类名执行序列。对一个序列的每个状态初始化为“未采集”。然后商品信息爬虫依次由URL爬虫类的类名反射生成实例来采集每个URL页面。对于一个URL,先在有向无环图里查询它依赖的所有URL爬虫类的类名状态是否都标记为“已采集”。若不是,则跳过这个URL爬虫类的类名;若是,则进行采集这个URL,采集成功则修改当前URL爬虫类名的采集状态为“已采集”并提取出信息需要的维度;采集失败,不修改当前状态,继续执行下一个URL。依次地遍历完这个URL序列。当这个遍历结果后,判断整个序列的URL的状态都是否标记为“已采集”。若是则表明这爬虫已经在这个URL序列对应的各个页面里抽取出完整的一个商品信息,可以通过数据导出类来保存在商品库里。若不是则表明一个或多个URL因为网络超时或电商网站拒绝访问等原因而采集失败导致商品信息不完整。这时将这个商品信息的数据上下文、URL爬虫类名有向无环图、URL爬虫类的类名执行序列及其状态合并写一个日志记录,放到商品信息重做日志里。
步骤五,执行商品评论爬虫任务,商品评论爬虫任务取得商品评论的URL。对这个URL依次附加一个递增的页码,通过商品评论爬虫类进行评论数据的采集,当评论数据中的时间小于配置的开始时间则停止采集。对于当前一个页码对应的URL,若采集成功,则相应的评论数据存入数据库里;若采集失败,则立即把页码、商品评论爬虫类名、上下文数据、任务ID合并成一条日志记录,存入商品评论重做日志队列。
步骤六,商品搜索爬虫定时重做任务模块,每隔30分钟在商品搜索重做日志队列取出10条日志记录,把日志记录分到各个服务器上。服务器逐条地对每一条日志记录反序列化为商品搜索爬虫任务需要的上下文数据、失败的页码。根据日志记录的电商平台搜索爬虫类的类名反射生成爬虫实例,通过这些数据重新执行商品搜索爬虫进行采集。若当前日志记录的全部页码采集成功,在商品搜索重做日志里删除对应当前的日志记录,并把得到的商品列表生成商品信息爬虫任务和商品评论爬虫任务。把商品信息爬虫任务放入商品搜索重做日志和把商品评论爬虫任务放入商品评论重做日志。若当前日志记录的全部或部分页码依然采集失败,在商品搜索重做日志里删除对应当前的日志记录。把商品搜索爬虫任务需要的页码、电商平台搜索爬虫类的类名、上下文数据、任务ID重新合并成新的日志记录,放在商品搜索重做日志队列。
步骤七,商品信息爬虫定时重做任务模块,每隔10分钟在商品信息重做日志队列里取出1000条日志记录,把日志记录分到各个服务器上。服务器逐条地对每一条日志记录反序列化商品信息、URL爬虫类名有向无环图、URL爬虫类的类名执行序列和状态,并根据URL序列执行方式进行重新采集标记为“未采集”的部分URL爬虫类的类名。已经标记为“已采集”的URL爬虫类的类名直接跳过。重新采集后,若URL序列全部标记为“已采集”说明此时的商品信息是完整的,可以把对应的商品信息导出数据库。并在商品信息重做日志里删除当前对应的日志记录。若URL序列部分URL仍是标记为“未采集”说明此时商品信息依然是不完整的,则需要在商品信息重做日志里删除当前对应的日志记录,则把当前已更新的商品信息、URL有向无环图、URL序列和状态合并成日志记录,放入商品信息重做日志队列。
步骤八,商品评论爬虫定时重做任务模块,每隔5分钟在商品评论重做日志队列里取出1000条日志记录,把日志记录分到各个服务器上。服务器逐条地对每一条日志记录反序列化页码、商品评论爬虫类的类名和商品评论爬虫任务中需要的上下文数据。通过这些数据执行商品评论爬虫采集商品评论。若采集成功,先在商品评论重做日志里删除当前对应的日志记录,并把评论数据导出到数据库。若采集失败,原来商品评论重做日志仍保留当前日志记录,等一隔时间后再尝试重做这个日志记录。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (7)

1.一种基于重做日志的分布式商品信息爬虫方法,其特征在于,包括:
通过配置任务数据库调度定向采集爬虫,读取配置任务得到多个商品搜索爬虫任务,定义搜索爬虫重做日记记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;
将多个商品搜索爬虫任务分配到各台服务器上执行,通过爬取电商网站本身的搜索引擎搜索关键字得到的商品列表,进一步获得商品信息爬虫任务及商品评价爬虫任务;
服务器执行商品信息爬虫任务及商品评价爬虫任务,获取多个商品的主页URL,通过这些URL爬取页面上的商品属性和商品的评论数据;
使用重做日志实时记录当前服务器在执行商品搜索爬虫任务、商品信息爬虫任务及商品评价爬虫任务时,由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID;通过定时启动重做任务读取日志记录,重新执行之前失败的爬虫任务;
通过定时启动重做任务读取重做日志记录,重新执行之前失败的爬虫任务,具体包括:
商品搜索爬虫定时重做任务模块,每隔30分钟在商品搜索重做日志里取出10条的日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化为商品搜索爬虫任务需要的上下文数据、失败的页码,根据日志记录的搜索爬虫类的类名通过类反射生成爬虫实例,并重新执行商品搜索爬虫进行采集;
商品信息爬虫定时重做任务模块,每隔10分钟商品信息重做日志里取出1000条日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化为商品信息、URL爬虫类的类名数据依赖的有向无环图、URL爬虫类的类名执行序列和状态,然后重新执行商品爬虫任务;
商品评论爬虫定时重做任务模块,每隔5分钟在商品评论重做日志里取出1000条日志记录,把日志记录分到各个服务器上,服务器逐条地对每一条日志记录反序列化页码、商品评论爬虫类的类名和商品评论爬虫任务中需要的上下文数据,通过这些数据执行商品评论爬虫采集商品评论。
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依次附加一个递增的页码,通过商品评论爬虫类进行评论数据的采集,当评论数据中的时间小于配置的开始时间则停止采集,对于当前一个页码对应的URL,若采集成功,则相应的评论数据存入数据库里。
5.根据权利要求1所述的分布式商品信息爬虫方法,其特征在于,使用重做日志实时记录当前服务器执行爬虫任务时由于网络请求失败而导致不完整的中间结果、爬虫所需要的数据上下文、日志类型、任务ID,具体步骤为:
对于网络请求失败的商品搜索爬虫任务,根据商品搜索爬虫重做日志记录格式来生成搜索爬虫重做日志记录,保存到日志中;
对于网络请求失败的商品信息爬虫任务,根据商品信息爬虫重做日志记录格式来生成商品信息爬虫重做日志,保存到日志中;
对于网络请求失败的商品评论爬虫任务,根据商品评论重做日志记录格式来生成商品评论重做日志,保存到日志中。
6.根据权利要求1所述的分布式商品信息爬虫方法,其特征在于,定义了三种重做日志记录格式,分别是搜索爬虫重做日志记录格式、商品信息爬虫重做日志记录格式及商品评论重做日志记录格式;
搜索爬虫重做日志记录包含日志类型、任务ID表示爬虫任务的ID、电商平台搜索爬虫类的类名、电商平台搜索爬虫执行过程中请求失败的页码数组、数据上下文;
商品信息爬虫重做日志记录包含日志类型、任务ID、商品信息属性所在URL页面对应的爬虫实现类的类名数组、商品信息各个属性所在URL页面的采集状态组成的数组、商品信息属性所在URL页面之间数据依赖组成的数组、数据上下文、商品信息对象Json序列化后的字符串;
商品评论重做日志记录包含日志类型、任务ID、商品评论爬虫类的类名、商品评论爬虫执行过程中请求失败的页码数组、数据上下文。
7.根据权利要求2所述的分布式商品信息爬虫方法,其特征在于,每个商品搜索爬虫任务包含搜索关键字、搜索过滤词、电商网站本身提供搜索引擎页面的URL及其对应抓取内容和解析内容的爬虫实现方法,所述解析内容的爬虫实现方法包含电商平台搜索爬虫类的类名、商品信息爬虫实现类的类名、商品评论爬虫类的类名和数据导出实现类的类名。
CN201610472048.1A 2016-06-23 2016-06-23 一种基于重做日志的分布式商品信息爬虫方法 Expired - Fee Related CN106126648B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610472048.1A CN106126648B (zh) 2016-06-23 2016-06-23 一种基于重做日志的分布式商品信息爬虫方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610472048.1A CN106126648B (zh) 2016-06-23 2016-06-23 一种基于重做日志的分布式商品信息爬虫方法

Publications (2)

Publication Number Publication Date
CN106126648A CN106126648A (zh) 2016-11-16
CN106126648B true CN106126648B (zh) 2019-04-09

Family

ID=57269048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610472048.1A Expired - Fee Related CN106126648B (zh) 2016-06-23 2016-06-23 一种基于重做日志的分布式商品信息爬虫方法

Country Status (1)

Country Link
CN (1) CN106126648B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577759B (zh) * 2017-09-01 2021-07-30 安徽广播电视大学 用户评论自动推荐方法
CN107678914A (zh) * 2017-09-13 2018-02-09 咪咕音乐有限公司 一种日志处理方法及装置、存储介质
CN107870861A (zh) * 2017-10-10 2018-04-03 上海壹账通金融科技有限公司 网页爬取的并发测试方法及应用服务器
CN110309403B (zh) * 2018-03-05 2022-11-04 百度在线网络技术(北京)有限公司 用于抓取数据的方法和装置
CN109918557A (zh) * 2019-03-12 2019-06-21 厦门商集网络科技有限责任公司 一种网页数据爬取合并方法及计算机可读存储介质
CN110020062B (zh) * 2019-04-12 2021-09-24 北京邮电大学 一种可定制的网络爬虫方法及***
CN112579850A (zh) * 2019-09-29 2021-03-30 北京国双科技有限公司 断点恢复方法及装置
CN112579858A (zh) * 2019-09-30 2021-03-30 北京国双科技有限公司 一种数据爬取方法及装置
CN111209463B (zh) * 2020-01-02 2023-11-28 北京天元创新科技有限公司 互联网数据采集方法及装置
CN111274217B (zh) * 2020-01-10 2023-08-18 深圳前海环融联易信息科技服务有限公司 数据采集的方法、装置、计算机设备以及存储介质
CN111783013A (zh) * 2020-06-28 2020-10-16 百度在线网络技术(北京)有限公司 评论信息发布的方法、装置、设备及计算机可读存储介质
CN113010639A (zh) * 2021-02-26 2021-06-22 济南浪潮高新科技投资发展有限公司 一种基于电商平台的商品分析方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399908A (zh) * 2013-07-30 2013-11-20 北京北纬通信科技股份有限公司 业务数据抓取方法和***
CN103778217A (zh) * 2014-01-20 2014-05-07 北京集奥聚合科技有限公司 基于当前网页列表进行推荐的方法和***
CN105045832A (zh) * 2015-06-30 2015-11-11 北京奇艺世纪科技有限公司 一种数据采集方法及装置
CN105608220A (zh) * 2016-01-08 2016-05-25 浪潮软件集团有限公司 一种基于分布式消息***的采集方法及装置
WO2016082215A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 一种移动屏幕界面的方法及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399908A (zh) * 2013-07-30 2013-11-20 北京北纬通信科技股份有限公司 业务数据抓取方法和***
CN103778217A (zh) * 2014-01-20 2014-05-07 北京集奥聚合科技有限公司 基于当前网页列表进行推荐的方法和***
WO2016082215A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 一种移动屏幕界面的方法及终端
CN105045832A (zh) * 2015-06-30 2015-11-11 北京奇艺世纪科技有限公司 一种数据采集方法及装置
CN105608220A (zh) * 2016-01-08 2016-05-25 浪潮软件集团有限公司 一种基于分布式消息***的采集方法及装置

Also Published As

Publication number Publication date
CN106126648A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
CN106126648B (zh) 一种基于重做日志的分布式商品信息爬虫方法
CN102930059B (zh) 一种聚焦爬虫的设计方法
CN102073726B (zh) 搜索引擎***的结构化数据的引入方法和装置
US20100169311A1 (en) Approaches for the unsupervised creation of structural templates for electronic documents
CN100444591C (zh) 获取网页关键字的方法及其应用***
JP2010501096A (ja) ラッパー生成およびテンプレート検出の協同最適化
CN102236696A (zh) 从非结构化文本提取可伸缩增量语义实体和相关性
Bin et al. Web mining research
Löser et al. Situational business intelligence
KR101801257B1 (ko) 효율적 건설문서 관리를 위한 텍스트마이닝 적용 기술
CN110188291B (zh) 基于代理日志的文档处理
CN104391978A (zh) 用于浏览器的网页收藏处理方法及装置
CN108959580A (zh) 一种标签数据的优化方法及***
US20150302090A1 (en) Method and System for the Structural Analysis of Websites
CN103530429A (zh) 一种网页正文抽取的方法
CN116775972A (zh) 基于信息技术的远端资源整理服务方法和***
CN116226494B (zh) 一种用于信息搜索的爬虫***及方法
CN109948015B (zh) 一种元搜索列表结果抽取方法及***
CN104063506A (zh) 重复网页识别方法和装置
CN104281693A (zh) 一种语义搜索方法及***
Bianchini et al. Characterization and search of web services through intensional knowledge
Huan et al. Query interface schema extraction for hidden web resources searching
Campi et al. Chapter 9: service marts
Chen et al. Analyzing User Behavior History for constructing user profile
CN110750701B (zh) 一种基于爬虫的网络推广效果评估方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190409