基于网络爬虫的京东电商平台数据分析*
1 引 言
2017年1月,中国互联网络信息中心(CNNIC)发布第39次《中国互联网络发展状况统计报告》,根据报告显示,截至2016年12月,中国网民规模相当于欧洲人口总量,高达7.31亿,全年新增网民共计4229万人.互联网普及率达53.2%,较2015年底提升了2.9个百分点.其中在商务交易应用类发展方面,截至2016年12月,中国有99.0%的企业使用计算机办公.在电子商务方面,开展在线采购、在线销售的比例分别为45.6%和45.3%,大约有38.7%的企业利用互联网开展营销推广活动.中国的互联网行业整体向价值化、规范化的方向发展,同时,移动化联网推动了共享化、设备智能化和场景多元化的消费模式[1].
图1为CNNIC中国互联网络发展状况统计调查结果.图1显示截至2016年12月全国有45.3%的企业开展在线销售业务.“十二五”期间,中国电子商务市场发现迅速,交易额翻了两番.2016年,“十三五”的开局之年,电子商务市场规模的增速依然保持稳定,企业的参与程度越来越深入,开展在线销售的企业数量也大幅增加.随着企业对品牌推广意识的提升、电子商务的日益普及,以及中国互联网的广告市场逐步规范化,互联网的营销市场仍然有很大的增长空间.但是近几年来电商行业的各大网站为抢占市场经常采取的策略是打价格战,纷纷通过促销、甚至降价等方式来吸引客户.据KPCB的调查报告显示,2009年到2016年全球移动端新用户的增长率持续下滑,可以预测在2017年这一增长率将继续放慢,用户增长将更加乏力,这就意味着人口增长带来的流量红利正在逐渐消退.那么,单纯地通过价格战来吸引新用户的方式已不容乐观.严峻的市场竞争形势迫使企业思考,在不依靠价格战这种野蛮增长的方式下,当企业面临增长困境,该如何应对?2017年11月在北京举办的“第三届中国行业互联网大会”为这一问题指出了解决思路,即在互联网时代下“新动能,新模式”将助推企业转型升级,优化要素配置,促进新经济转型.因此,对电商平台来说,数据是电商分析问题的基础,面对不断增长的海量信息,如何高效的获取数据、挖掘信息是电商企业精细化运营和数据驱动决策中亟待解决的问题.网络爬虫技术在电商信息来源方面和其他领域都有很广泛的应用.
年份/a
图1 2011-2016年企业在线销售开展比例折线图
2 网络爬虫技术的发展现状
随着Internet规模的不断扩大的和Internet技术的迅速发展,Web信息量呈指数增长,数据呈现出数据量大、种类多、实时性强、价值大等特点,大数据的应用已经蔓延到各个领域[2].数据挖掘是从海量数据中寻找其规律和联系的技术,是统计学、数据库技术和人工智能技术的综合.目前,在数据挖掘的领域范畴中,相关研究机构(如:Google、百度等)已经给出了较为成熟稳定的大型网络爬虫解决方案,由于涉及商业化利益和机密,相对成熟的搜索引擎技术不会被公开化,网络中的相关资源也只是肤浅的描述和概括,而且这些方案大都只能为一般用户提供一种不可定制的搜索服务,大部分公司并不提供相关的技术方案支持.开源在网络爬虫方面,也已经有一些相对成熟的网络爬虫项目,但很多并不能被广泛采用,并且可能会存在一些问题,如:不稳定、体验效果差、配置繁琐等.在开源爬虫项目中,大部分都是单机版的,无法应用于海量数据的采集等其他情况,因此,针对电商平台研究出一套配置简单、稳定性强、效率高的爬虫是很必要的.
网络爬虫追求的方向是如何尽可能及时、全面、有效地获取互联网上的数据索引,主要包括以下方面的研究:发展大规模分布式系统、提高系统的性能[3].一是分布式系统有效地推动了搜索引擎技术的发展.搭建一套扩展性强、性能稳定、成本低廉的分布式集群系统,多台机器并行运算,可以有效地解决多个网间访问速度过慢对网页信息获取的影响,加快数据的计算速度,提高网络爬虫的性能[4];二是网络数据抓取内容越来越多元化.人们对网络资源的需求不仅仅是单纯的文字,需求正朝着多元化的道路发展,例如,视频搜索,图片搜索以及各类文档搜索,因此网络爬虫面对这些也应该能够准确的解析并且准确的获取;三是更多的个性化服务.当前抓取内容需要具备个性化搜索,人们关心的并不是所有的电商平台网站和其他品类网站,而只是满足自己所需要的一些电商网站等站点,因此就需要网络爬虫有针对性的去获取,不同的站点对应不同的权值;四是AJAX数据获取[5].AJAX框架有大量的表现层代码,由于网络和其他的反爬虫因素在一定程度上降低了网络爬虫的效率.因此,开展支持AJAX框架站网络爬虫的研究,对解决AJAX站点地址(URL)获取以及检索隐藏在其中大量数据的问题,具有重要的理论意义与实用价值[6].
术前所有患者均行裸眼视力、矫正视力及裂隙灯显微镜检查,非接触眼压(TX-F,日本Canon公司)及矫正眼压检查(ORA,美国Richard公司),电脑验光(kr-8800,日本Topcon公司)及散瞳后综合验光(RT-2100,日本Niderk公司),眼前节分析仪(Allegro Oculyzer,德国Oculus公司)测量角膜厚度及角膜形态,三面镜检查眼底,A超(AVISO,法国光太公司)测量眼轴长度。
事实上,在网络爬虫领域,学术界以及商业界都已有一些研究,其中包括:网络爬行策略、海量数据存储方式、海量数据索引方式、网页评级分类等.随着网络信息资源的快速增长以及网络信息资源动态的变化,传统的爬虫技无法满足人们对个性化服务的需求,以何种方式访问网络,提高爬虫效率,已成为近几年来网络爬虫研究的主要问题之一.但大多数研究仅着眼于某一个方面的改进,因此对于一个完整的爬虫系统来说,或多或少的会存在着某些不足.本文在已有研究成果基础上,设计一个高效可行的网络爬虫方案,进而对爬取到的数据进行数据分析和数据挖掘,为企业决策提供指导.
本文主要基于MapReduce分布式系统实现了网络爬虫在电商中的应用,提高了网爬虫性能,加快页面信息获取速度[7].针对海量信息无法存储的问题,采用非结构化分布式存储技术,它是一种全新的非关系型的分布式存储技术,采用新的数据模型,具有海量数据存储、高性能、高可用性、强伸缩性等特点,可以有效地解决数据存储的问题.针对页面通过AJAX异步请求获取后台数据,呈现到网页信息无法获取的问题,采用Selenium技术,它可以通过调用浏览器的方式,加载页面自身内容和通过AJAX异步请求展现的内容,完全加载后,Selenium可以获取到所有页面内容,Selenium还可以模拟鼠标单击、双击、右击等一些操作,解决隐藏数据无法获取的问题[8].
3 相关理论基础
3.1 MapReduce
2)商品链接:链接一般都是元素里面的属性“href”的值,通过链接可以得到商品的详情页面,获取更多的商品信息.
如图2所示,每个滤波方向为一组,预处理后的图像经过S1层得到64副滤波后的图像,C1层池化后共32副图像,最后联结所有C1输出得到特征向量。
“Map”过程:Master节点接收到输入的数据后会将数据分割成许多小的数据块并把它们分给不同的Worker节点.Worker节点可能会再次重复上面内容;或者Worker节点调用用户自定义的函数,将处理得到的键值数据对写入到本地磁盘中.
“Reduce”过程:在Worker节点上执行Reduce函数,整理Map函数处理好的全部数据,把键名相同的数据通过用户提交的指定的方法合成不同的数据集合,保存到磁盘中.
图2 MapReduce运行结构图
3.2 AJAX
Ajax并不能说是一种新的研发技术,而是提取的Java、XML与JavaScript等技术的特点,创建了交互式网页应用的Web开发技术,其中包括这些技术:使用HTML和CSS定义呈现给用户的页面内容和媒体信息;使用DOM实时动态修改页面显示内容和加载效果;使用XML和XSLT进行数据交换获取和结构化处理;使用XMLHttpRequest方法进行异步数据的查询和获取;使用JavaScript绑定和处理以上部分.
我要拴住王鲶鱼,就必须怀上孕。王鲶鱼女人不少,但都没给他生儿,我想给他生儿,王鲶鱼说只要生儿,就带我出国定居。我之所以要嫁给王鲶鱼,就是想跟着他出国定居,现在的有钱人,老婆孩子不都在国外生活吗?
AJAX Web应用模型如图3所示.
图3 AJAX Web应用模型图
事实上,越来越多的电商运营团队已意识到精细化运营和数据驱动思维已经成为电商自身增长日益重要的因素[14-18],所以一个能高效率的网络爬虫对一个电商平台进行数据挖掘有效信息而言是非常重要的.因此,本文主要建立在分布式系统的基础上,多台计算机多线程同时运行,对京东平台的商品信息进行抓取.通过对获取信息的整理、分析,对京东电商的发展形势进行把握.基于以上介绍对京东电商平台信息获取的运行界面如图6所示.
3.3 Jumony Core
Jumony Core是一个非常真实的HTML引擎.目前的HTML解析器加上简单的正则表达式已经可以满足用户操纵HTML文档的需求,但对于Jumony Core,它更加强大.Jumony Core解析结果和浏览器的解析结果相似度非常高,无论是无结束标签的元素,可选结束标签的元素,或是标记属性,或是CSS选择器和样式,一切合法的,不合法的HTML文档,浏览器解析成什么样式和内容,Jumony Core出来的效果几乎和浏览器一样.Jumony Core包含的封装方法及作用如表1所示.
表1 Jumony Core的封装方法表
文件功能Ivony.Web.Html.dllJumony的核心DLL,定义了抽象HTMLDOM模型.并提供大量扩展方法来操纵HT⁃MLDOMIvony.Web.Html.Binding.dll提供数据绑定支持Ivony.Web.Html.Parser.dll即JumonyParser,可以分析HTML文本并创建HTMLDOMIvony.Core.dll包含基础接口,和一些提高编程体验基础扩展方法
4 本研究对爬虫技术的设计
4.1 设计思想
目前,爬虫在抓取数据上,一般采取两种策略:广度优先策略与深度优先策略[12].广度优先是指爬虫沿着树进行横向遍历,直到抓取完起始网页中连接的所有网页为止,然后再选择其中的一个网页链接,循环这个过程.此方法可以让爬虫并行进行,提高了抓取速度.深度优先是指爬虫沿着树进行纵向遍历.深度优先策略是一个递归的过程,因此在程序执行的时候会大量消耗计算机的内存,很容易使爬虫陷入问题,甚至是电脑死机.另外,递归与多线程是无法兼容的,因为多线程可以一次运行多个任务,但每个线程都要有自己的堆栈.而在递归时,当一个方法调用它自身时,它们需要使用同一个堆栈.因此,本爬虫程序采用广度优先策略.具体实现方式为:首先,统一不同电商平台的分类信息,通过比较判断找出不同电商平台的公共分类信息,分类信息还分为一级分类和二级分类,一级分类下面包含多个二级分类;其次,整合所有二级分类,获取所有二级分类所对应的商品列表URL,初始化URL,直到对应的URL没有商品为止;最后,把获取到的产品信息存储到数据库,存储到数据库中的数据经过清洗过滤得到标准化的数据,然后进行数据统计分析,从而把握电商行业的销售趋势.图4为本程序对商品数据获取及保存示意图.
4.2 操作流程与实现
随着畜牧业规模化、集约化的发展,导致疾病传播率高,病菌种类多,畜禽临床治疗十分棘手[4]。而作为新型饲料资源的蜂蜜等主要蜂产品,由于其天然性、营养性、无抗性、排泄物少等特点,必然受到畜牧业的青睐[4-5]。研究指出饲用蜂蜜可以促进动物生产性能,还可以提高免疫力,抑制肠道致病菌群的生长等作用[4,6]。但因病虫害、气候等外界因素影响使得蜜蜂人工饲料中滥用药物,造成蜂蜜中氯霉素含量超标,使得其饲用价值受到一定的威胁。
图5清晰地展示了程序的主要流程.收集网络中不同的电商平台进行分析对比,获取不同电商网站针对的不同分类的侧重点,对于相似的分类,可以关联分类后统一化名称.对于每个分类下面的商品,需要不断的初始化对应URL,从而获得不同分页下面的商品信息,获取商品信息的时候,对信息不完整的商品进行舍弃.在数据整理的时候,过滤不符合规则、异常的数据.
4.3 统一分类
当前网络电商平台众多,其中国内比较知名的主要有淘宝、天猫、京东等,但这些电商平台的一级分类和二级分类,甚至更深层的分类错综复杂[13].把这些电商平台的所有分类整合,挑选出其中具有代表性的一级分类,在一级分类的决断中,尽可能的要包含人们生活的各方面.对于二级分类的确定,通过与一级分类的关联度和常识去决定.最终,可以得到基于不同电商平台下的一套相对统一的标准化分类.
双重身份是高等学校在教育资源共享中的一个重要特征,它不仅是共享资源的提供者,也是共享资源的使用者。高校自身是最懂得学校未来的发展状态的,没有哪一个部门比高校自身的管理部门更了解学校的境遇和学校的基础设施以及教育的条件。在对未来高校的发展规划的问题上,高校是最具有话语权的一方。所以学校要跟随时代的脚步,努力争取,充分利用自身的办学自主权,有效规划本校的发展目标以及本校的内部管理活动,特别是在对于教育教学相关活动的决定权上。只有这样,高校才可以在教育资源共享中决定选取学校内部发展何种教育资源作为自身的共享对象,也才有资格自主选择符合自身需要的资源。
4.4 初始化URL
不同电商平台的二级分类下面可能会有更细的小分类,但不是商品列表,要尽可能完整的获取到所有分类下面的信息就需要把这些更小的分类下面的商品列表对应的URL也存储到数据库,这些小的分类应该与其父级分类建立关联外键.每个URL对应的商品列表只有一页,一般要想获取更多的页面列表就需要改变URL中对应页码的数值.尚待访问URL队列可以被构造为一个先进先出(FIFO)队列,信息搜索的下一个将要爬行的页面来自队列头,新的URL被加入到队列尾.每一步都是从队列头中选出下一个URL供爬虫抓取,直到爬完此队列中所有URL为止.
图4 商品数据操作示意图
图5 抓取流程图
4.5 页面信息提取
在提取页面信息时,首先必须先判断页面的编码方式,目前的字符集种类非常多,其中主要以“UTF-8”,“GBK”,“GB2312”为主,具体可以在网页头部可以看到,例如:.在读取页面内容时,先要判断获取内容的类型,如果是多媒体数据,则可以下载存储到网页数据库中,如果是无结构或半结构化的网页文本,则需要继续分析.在获取URL页面内容时,如果出现超时、页面丢失、获取错误等现象时,就认为此网页失效,对应的URL就被存储到相应的错误列表中,如果能正常获取,则需要解析网页内容.
分布式计算是将整个任务先分割成很多小的子任务到子节点处理,再将子节点处理得到的结果进行合并整理,获取最终结果[10].在MapReduce的执行任务的过程中主要分为Map和Reduce两个步骤:当用户输入一条指令后,Map程序首先把任务分割成不相关的小任务块,这些小的任务块会被分配到不同的计算机进去处理,得到的结果通过Reduce程序整合.MapReduce的一般运行结构如图2所示.
4.6 解析页面内容
网页解析主要是内容分析和链接提取.获取页面内容后,根据页面内容去解析提取所需要的信息,并通过标签,CSS名称或者标签ID获取目的标签路径.一般情况下,元素会包含很多属性,其中具有唯一性的属性就是元素的ID,这样能更快更精确的找到需要的内容,其次就是元素的CSS名称,CSS名称可以存在有很多,可以通过下标或者结合元素其他属性来准确获取,最后就是通过元素的标签获取,一个页面内容会包含很多这样的标签,想确定唯一想要的就要逐步的查找该元素的父级,通过不同的父级元素来获取唯一的子级元素.获取到的元素内容文档可以提取到如下信息:
当前和今后一个时期,是向全面建成小康社会迈进的重要时期,民生诉求日趋复杂多样,相对于更多、更高的物质要求,对幸福感、满意度等“精神饥渴”更为迫切;相对于防洪、供水等一般水利服务的满足,对水多不患、水少无忧、绿水青山的要求,对水文化、水素养、水文明的需求更为强烈。同时,党的十八大从全局战略高度对保障和改善民生做出新部署,客观要求我们从新的起点出发,加深民生水利认识,丰富民生水利实践,不断将民生水利推向深入。
1)文档标题:通过文件头标签
MapReduce是Google在2004年提出的一个用于处理大规模数据集合的分布式计算架构.该构架的提出是由编程函数中常用的Map,Reduce函数启发结合而来,通过这个架构,可以帮助对分布式计算不太了解的程序员完成分布式计算程序的编程,实现对问题的分解与合并[9].
4)图片:电商平台中商品几乎都是存在图片的展示,图片的信息可以通过命令符或里面的属性“src”或”background”的值获取,属性值代表了商品图片的链接地址,并不能直接下载存储在数据库中.网页图片的获取要通过程序解析图片的二级制字符流,把这些字符再在程序中下载并保存到本地数据库.
3)商品标题:商品标题一般可以在两个地方获取,第一,商品列表中有标题的信息,第二,在商品详情页面中可以获取商品的标题信息.
选取我院2017年12月—2018年5月期间收治的甲状腺CNB患者84例,且84例患者均在我院进行了手术。84例CNB患者共87个结节,其中男性16例,女性68例,年龄24~73岁,平均(42.65±5.27)岁。其中3个患者进行2个结节穿刺,81个患者进行1个结节穿刺。术前均进行血常规、血凝四项、传染病三项、乙肝五项检查。
Henning Wallentowitz教授在“电气化、自动化、互联化:未来汽车的需求和概念”为题的主旨报告中指出,各种影响驱动之下的未来出行方式中,电动化、自动驾驶和网联化将是主要趋势,为此,他特别展示了很多新的汽车设计概念以及在电驱动、底盘等方面的最新研究成果,是对未来美好出行的积极响应。
5)多窗口页面:通过命令符