林 军
(泉州纺织服装职业学院,福建 石狮 362700)
在当前电子信息时代下,由于空间数据没有描述性信息,很难准确衡量其数据质量,后续数据的获取和应用也比较困难。各行各业普遍关注的焦点之一是如何快速地从各类海量的大数据中获取自己所需的数据。在大数据信息时代,数据信息的特点是具有复杂庞大的处理特征,国内外一些学者研究的普通数据处理分析方法,很难从中快速获取需要的数据信息。如果仅依靠人工智能获取相关信息数据,会导致工作量巨大,而且获取的相关信息非常有限。网络搜索爬虫引擎作为一种自动挖掘提取有效网页的应用程序,可以高效地从网站数据库中的各种海量网页信息里,自动挖掘出有效的网页信息。该技术的优势是结合了数学进化论的信息论、信号信息处理等科学思想。通过多种复杂的分析算法,对大量未经优化处理的信息数据进行集中深入的分析,得出这类数据与有效率的知识系统信息之间的潜在相互关系。近年来,数据挖掘技术在多个方面,例如医学、商业、工程和科学等各个领域都取得了显著的成果。随着全球大数据应用时代的逐步到来,数据挖掘等新技术的产业研究应用价值也越来越大。Python是一种面向对象的单机编程应用语言,其特点是语言简洁方便。与其他编程语言变体相比,用Python编写的代码更易被读懂,语法相对简单,设计更简洁、高效、方便,从而受到广大用户的欢迎。强大的数据科学计算分析能力和丰富的开源代码数据库应用资源等也使得Python成为当今数据挖掘技术领域最广泛流行的软件开发工具之一。使用Python进行海量的数据分析挖掘不仅操作容易上手,而且门槛低。使用其他最流行的工具分析数据库,如Pasklearn、Pandas和Panumpy,将大大减少企业在数据分析挖掘工作过程中多个关键环节的复杂工作量,让数据研究工作人员可以将自己更多的时间和精力投入到企业数据分析挖掘的系统设计和数据分析中,以得到更准确有效的数据分析研究结果。
在分析获取Web网页数据内容资源这一阶段,主要是通过对整个网页的内容结构以及内容的综合分析获取网页中有用的数据内容资源的一个过程。网络空间数据的质量是衡量用户信息有效性的关键,也是后期数据使用的前提。在这个发展阶段,需要收集大量数据进行分析挖掘和统计分析,研究其所需的原始统计数据。数据结构非常多样化、复杂化,在这个处理过程中若不对具体数据信息进行有效处理,将导致数据中存在大量的冗余信息[1]。空间数据资料库建立的基础是有效合理地抓取数据并进行归类。采集到的数据需要在某个维度或多个维度上进行关联,使收集到的数据具有多个维度。在数据收集阶段,选择能够准确描述数据的维度信息,如果存在相关性较低或明显不相关的维度信息,则可以在此阶段将其删除。采集到的数据必须是唯一的,数据初步筛选阶段可以在一定程度上过滤掉重复的数据,例如,淘宝网某商品信息可能存在多个时效性展示数据,因此,最新的商品数据将主要用于覆盖原有的旧数据,这样就可以达到初步的数据唯一性的规定。数据采集规范达成一致后,网页数据将按照初步规范进行定向采集。本文针对淘宝网展开具体的信息数据的爬取设计,具体的数据爬取方向如图1所示。
在淘宝网站搜索商品信息的主要过滤条件分别为商品的颜色分类、商品的性能分类、商品的用处分类。通过以上3个过滤条件,可以初步得到指定商品类别的信息数据[2]。
为了爬取淘宝网的商品数据,需要搭建一个Scrapy工程,通过其强大的功能收集所需的网络数据。Scrapy的项目构建极其简单,具体过程如图2所示。
首先,明确要爬取的数据的种类信息后,可以通过Scrapy内置的脚手架命令,进一步完成项目框架的搭建工作;搭建完项目框架后,下一步就是生成自定义爬虫文件;运行Scrapygenspide.com命令[3];指令中的Tcrawl表示按照通用爬虫模板的风格生成爬虫文件,爬虫的目标网站域名为taobao.com;运行该命令后,会在Spiders文件中生成taobao.py文件;该文件会根据爬取模板生成自定义爬虫类taobao;该类继承了scrapy.Spider类的方法和属性;同时指定的taobao.com域名会填入允许爬取的域名属性;经过两个简单的命令,就设计完成了爬虫项目的大体项目结构。
这里可以充分展示Python的Scrapy框架的易用性和高封装性[4],使爬虫项目更容易上手,减少重复烦琐的前期工作,提高开发效率。抓取策略采用广度网页优先级,其搜索抓取策略主要是抓取未开放下载的网页资源链接,将其直接存放到URL搜索队列的网页末尾处的数据中,不需要做任何屏蔽处理。基本思路:将第一个新的网页行首设置为新的行首,提取几个新的网页下载链接,然后依次将其放入几个下载链接队列,然后继续依次提取几个网页中的链接,执行下载命令。网页搜索发展过程是一个从网站内层向网页外层深度辐射的搜索过程。
分析用户行为的反爬虫,主要是检测用户的访问行为,如用户使用的IP,短时间内对同一页面信息的多次访问请求,或者短时间内重复请求更改IP,这种异常的用户行为会给服务器造成很大的负载,同时也具备爬虫的基本行为特征。决策树是一种被广泛使用的分类算法,该算法是一种监督学习算法,可以理解为一个树状的流程图,其中上层的节点将决定下层节点的分布。通过获取给定的近邻数据集可以构建一个训练模型,然后在训练模型中通过寻找得到k个最小的近邻,以方便获取新的建模数据作为实例[5]。根据决策树算法进行关键词整体相关度度量,具体计算,如式(1):
(1)
式中:Qinc表示整体相关度;B、C分别表示网页的内容分词;k表示权值个数;Y表示不同权值所在的位置。在有k个值的实例中,分类标签最多地被认为是新实例的最终分类结果。采用决策树计算空间相关度,如式(2):
Qinc(Ci,D)=Qinc(Ci,D1)×α+Qinc。
(2)
式中的每个检索分词都根据他们在网页中的不同位置进一步实现对空间敏感网页的相似度度量。
性能评估方法主要是基于平均数的单一网页文件,搜索爬虫包括可以读取和每秒下载两项性能指标。越好的搜索性能,可以下载的搜索页面也就越多,在规定的搜索时间内,较好的爬虫搜索性能是可以直接下载。为了有效地提高爬虫的下载性能,首先检查所使用的爬虫能否满足高效下载和大量网页需求分析算法的要求,以及数据结构模型是否满足需求。网站可以据此进行分析,并对有异常行为的用户进行屏蔽。同时,一些网站也采取了不同的限制策略,即反爬虫机制,拒绝爬虫访问自己的网站。在http请求过程中,会包含请求的头部信息,反爬虫通过识别请求的头部信息判断是否为非法访问。在用户通过网页浏览器正常浏览的过程中,数据请求体的头部信息中会携带浏览器的标识信息,例如HeadersUserAgentMozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTMLlikeGecko)Chrome/62.0.3202.75Safari/537.36,此标头表明此请求是通过Mozilla浏览器发起的。例如,在JavaScript脚本中,可以通过编写批量Ajax请求来获取网站信息,但是请求的头部信息往往与浏览器请求的不同。网站可以通过识别User-Agent头信息来拦截可疑爬虫的请求,保护网站信息。以上两种异常情况多发生在静态网站上,为了安全和反爬虫,网站可以使用动态页面技术。网站本身的数据会在Ajax请求后获取,或者由JavaScript语言动态生成。在动态网页中,虽然其他人可以使用抓包软件来捕获网络中的请求响应,但是在获取的数据中,网站对Ajax请求参数进行了加密,去除了参数的语义和可读性,即使获得了信息,也很难解读其具体内容。同时,网站的接口层被高度封装和加密,使得在内部调用相同的数据请求时,外界无法获取详细信息[6]。为了通过网站头部对User-Agent的识别和检测,可以通过伪装网站信息数据请求体中的头部信息来规避反爬虫。同时,由于请求量大,可以进一步准备一个浏览器头部列表,为后续的每个请求随机分配不同的请求头部,让网站对爬虫项的大批量请求进行识别,它被认为是从多个浏览器启动的,在抓取数据的过程中,Web服务器会将请求识别为浏览器的常规请求。
基于Python编写的爬虫应用程序,无论使用开源网站爬虫还是自定义资源爬虫,几乎都可以自动对其进行收集和分析。现在互联网上的公共资源数据大部分都支持正则表达式读写操作,并由强大的多脚本语言系统提供支持[7]。采用RSA加密淘宝网的数据,此种算法是现在主流的加密算法,在一定程度上能够抵挡大部分的密码攻击,一般情况下不具有私密性,能够对外界开放,保密性能良好。对此需要优质的数据爬虫引擎,精准采集所需数据,整合所有数据存入数据库中。其具体流程,如图3所示。
图3 商品信息爬取流程
多渠道商品报价信息对于后期数据处理模块的数据分析功能具有非常重要的意义,尤其是在竞品部分。产品多渠道信息是指获取多个卖家对同一产品的报价,可以为买家提供横向比较,以获得最合适的价格。商品评论页面信息包含很多有用的信息,包括内容、用户、评论时间、用户的类别、评分等级、评论有用性等。本文研究使用Python编写爬虫程序,采用爬虫软件收集批量数据,简单高效,爬虫采集性能健壮稳定,具有批量数据下载可不定时中断的强大特点。定制的在线爬虫软件针对性强,爬虫自己独立开发运行灵活性大。爬虫引擎抓取收集到的大量数据对后续的研究推广使用发展意义重大。其主要特点之一是帮助很好地解决了复杂的结构化编程,使得面向对象(也称为面向过程)的概念更容易理解。Python使用动态类型系统,具有开源软件的性质,首先编译成与需要移植的软件平台相关的二进制源代码,然后通过解释器执行。它的运行速度明显快于旧的Java系统[8]。还有庞大的软件标准库,如Numpy库、wxPython库、Djangon库框架等众多优质软件库。
需要获取的淘宝电商的相关数据是分类信息,商品分类信息爬取的难点在于电子商务网站对商品的分类非常详细,存在着多个一级分类,每个分类下面又有不同数目的子分类,子分类又有很多子分类。商品数据信息的爬取基于Scrapy框架实现,该框架采用事件来响应请求。在使用该框架之前,配置代码如图4所示。
图4 Scrapy框架配置截图
为了解决商品分类信息嵌套获取的难点,采用的策略是先依次获取上层目录信息,然后对每个目录的链接进行解析函数回调。此种策略在一定程度上实现了递归思想。
为了验证文中方法的有效性,将运行前述框架配置好的代码,爬取淘宝网站的商品信息数据,得到的部分商品数据结果如图5所示。
图5显示的是部分商品分类信息的爬取结果,爬取结果以JSON格式存储在Monodb中,该部分的商品信息比较简单,只涉及商品名称、链接和图片。图片在数据库中以图片链接保存的,不再另设图片服务器。
图5 部分商品数据爬取结果示例
数据分析主要涉及自然语言情感分析和基础统计,基础统计部分需要涉及MongDB的数据读取操作,将数据简单地进行统计,如图6所示。
根据商品信息的评价等级区分评价的正面和负面,结合评论信息的正面和负面,利用自然语言处理领域的朴素贝叶斯分类器训练一个合适的分类器,分析评论信息中的关键词,得到一些关键词的正面和负面情绪比例。获得一些关键词的正负情感比例后,可以推荐合适的关键词出现在产品的描述信息中,从而在同类商品中为产品赢得更好的关注度。实验重点放在了数据分析部分中的自然语言情感分析的代码讲解上,通过实例应用得出文中基于Py-thon获取的淘宝网商品数据信息清晰明了,为网页信息数据爬取设计提供参考。
图6 简单统计分析可视化示例
通过强大的移动网络数据爬虫分析技术,用户可以在短短的时间内快速提取挖掘出符合用户日常需要的各类数据信息分析数据,甚至可以快速挖掘出更深、更有价值的信息数据。强大的Python多种语言支持可以为各种类型的应用软件开发?工具和打包开发提供重要的软件支持。在一定的程度上,它还提供实时提取各种主题Web网站信息和相关数据的服务,为需要面向不同主题的网站用户进行查询提供准备好的数据库和资源,实现各种Web相关数据的实时抓取。