APP下载

面向大规模电商平台的商品信息采集技术研究

2022-11-28廖美红

企业科技与发展 2022年6期
关键词:爬虫页面数据库

廖美红,陆 莹

(广西工商职业技术学院,广西 南宁 530003)

0 引言

商品信息属于电子数据的一种,对其进行采集也被称为数据采集或数据获取,是指在一个系统采集数据后将数据信息传输到另一个系统中,为后续系统数据分析做准备。在大规模电商平台中,其所包含的数据信息以消费者或企业名义广泛分布在各大电商平台、智能终端、管理系统及第三方服务平台上,除商品买卖信息外,还包括企业和消费者基本信息、空间环境信息等。各类数据信息在逻辑上存在某种关联,数据传递也具有很强的目的性,因此对于数据采集来说,只有抓住整个动态流通过程的核心要素,才可准确找出自己所需的信息数据。在大数据环境下,电商平台中的数据是公开、共享的,但数据间的各种信息传输和分析需要有一个采集整理的过程。本文研究的信息采集主要针对商品信息。

1 大规模电商平台特征分析

1.1 电商平台页面结构共性分析

计算机技术的飞速发展,促进了不同领域技术的融合,其衍生出来的行业新概念,也在不断扩大应用空间,并潜移默化地影响人们的生活习惯。电子商务的出现为人们购物提供了新的选择,目前国内关注度较高的电商平台有京东、淘宝、当当网、苏宁易购等,这些应用平台在功能和结构上均有着自身独特的优势,商品信息丰富,种类繁多。同时,它们具有诸多相似性,都包含以下几种HTML结构。

1.1.1 商品搜索框

大规模电商平台所容纳的商品种类繁多,为确保消费者在最短时间找到自己心仪的商品,节省时间和精力,平台会提供检索服务,即在页面检索框中输入想要查找的商品信息(名称、品牌、流行词汇等),便可快速查询到该商品,以及相关商品信息。为方便消费者寻找和使用,“商品搜索框”通常会出现在平台首页上方中间处或显眼处,外形设计也符合大众审美标准。

1.1.2 分页按钮

分页按钮是一种比较有特色的HTML结构,在降低时间损耗和减轻性能压力方面具有突出作用。众所周知,应用平台为最大限度地满足消费者浏览和购买需求,往往会承载大量商品信息,若该商品符合大多数消费者消费标准和要求,当单次请求发出后,服务器会在资源完成搜集后提供数量庞大的商品信息,这会导致性能压力瞬间增大,需要耗费大量时间。分页功能的实现,在一定程度上解决了这一问题,单次请求行为发生后,系统或服务器会分批次加载商品信息[1]。结合实际应用效果来看,分页功能可解决如下两类问题。

第一,降低单次请求对服务器产生的性能压力,减少等待时间。以图片浏览请求为例,网络消费中,消费者的图片浏览需求更多,目的性也更强,往往在一次购买请求发生前,需要浏览几十张甚至是上百张图片,若这些图片被一次性传递过来,在下载量激增现象发生之后,服务器需要承担巨大的安全风险,相应的,数据加载时间也会更长。站在消费者角度,图片浏览需要一定时间,同一时间接收上百张图片,并不利于提高浏览质量。分页处理后,服务器性能压力会减轻,数据加载时间会得到很好控制,更为关键的是,一旦消费者寻找到自己心仪的商品图片后,便不再需要未加载出的图片。

第二,阻止低价值请求行为的发生。所谓“低价值请求”,即指无意义的、需求度低的请求。以商品搜索为例,假如某种商品信息数量为100,需要20张页面分别展示,在没有分页功能支持下,一次请求发生后,系统便需要把全部100条信息加载出来,但它们未必都是“必须信息”,可能消费者最需要的信息处于前10条信息之中,在这种情况下,后面90条信息都可被视为低价值信息,而这90条信息的加载行为,自然就被认为是无意义的。分页功能实现后,消费者只需要浏览前10条信息即可,后面的加载行为将不会发生。

1.1.3 商品详情页

商品详情页是展示商品详细信息的页面,基于结构需求和商品内容组成,按照一定的逻辑关联性进行嵌套组装。消费者可以根据实际需求点击相应的按钮查询商品信息,包括商品参数、购买记录与评价、促销活动等。

1.2 页面交互流程

大型电商平台的基本交互流程:第一,输入需要查询的商品名称或信息关键词后,点击搜索框下方的“搜索”按钮,系统会根据请求跳转至相应页面。第二,点击翻页操作,页面跳转后会展示出新的商品信息。第三,点击目标商品,进入商品详情页。

1.3 商品内容加载方式

1.3.1 静态加载

静态加载是相对于动态加载的一种信息加载方式。服务器接收到信息请求后,按照内容需求,将相应的数据信息发送至请求端,数据内容展示给消费者之前,需要经过浏览器渲染。静态加载方式下的信息加载,主要针对变化频率较低的商品信息,包括商品介绍、售后服务等[2]。

1.3.2 动态加载

在商品信息加载方式上,静态加载与动态加载间的关系,有点类似于计算机网络中的静态IP地址和动态IP地址间的关系。“静”和“动”最明显的区别在于后者变化频率更高,具有更好的安全性。但从这个角度讲,当某电商不希望自己的重要商品信息或关键性数据轻易被别人所知时,便会采用动态加载方式将信息数据呈现出来。动态加载的内容一般都是变化频率较高,实时交互性强,以及比较重要的数据。

1.4 商品重复加载

正常情况下,电商平台在展示商品信息和促销活动时,会按照一定的规则或顺序进行排列,如按照价格高低进行排列,按照交易量大小进行排列,等等。用户根据按钮内容提示操作,便可获得相应信息结果。但随着交易量不断上升,商品款式的增加,商品价格的变化,以及受市场行情等因素影响,排列结果会不断发生变化,且存在一定重叠性。因此,重复加载问题便不可避免地发生。例如,用户在当前的商品检索结果页面中浏览商品时,位于页面底端的几个排序结果靠后的商品,在下一个检索结果页中有可能会出现在页面顶端的排序结果靠前的位置,从而造成重复加载。

2 常见的大数据信息采集技术

电商平台中的产品信息量是非常庞大的,因此对其商品信息进行采集,也属于大数据信息采集,以下是常见的大数据信息采集技术及其优劣势分析[3]。

2.1 软件接口方式

通过各软件厂商开放数据接口,实现不同软件数据的互联互通,是当前阶段最为常见的一种数据对接方式。相比其他方式,软件接口方式具有以下优势。

第一,在该方式下,数据传递可靠性会更高,应用性更强,发展空间更广,数据重复现象出现概率较低。第二,最大限度地满足实时数据应用需求。但它也存在一些缺陷:①接口开发成本过高,需要大量资金支持。②接口开发所涉及的工作内容较多且工作量大,一般需要多个软件厂商同时支持。③可扩展性非常有限,若要增加新任务模块,必须改动原有数据接口编码,费时费力。

2.2 软件机器人采集

软件机器人是现阶段比较前沿的软件数据对接技术,既能实现客户端软件数据的采集,也能实现对网站中的软件数据展开采集。常见的如博为小帮软件机器人,产品设计原则为“所见即所得”,即不需要软件厂商配合的情况下,采集软件界面上的数据,输出的结果是结构化的数据库或者Excel表。

如果只需要界面上的业务数据,或者遇到软件厂商不配合/倒闭、数据库分析困难的情况下,利用软件机器人采集数据更可取,尤其是详情页数据的采集功能比较有特色,其技术特点如下:无须原软件厂商配合;兼容性强,可采集汇聚Windows平台各种软件系统数据;输出结构化数据;即配即用,实施周期短、简单高效;配置简单,不用编程,每个人都可以亲自制作一个软件机器人;价格相对人工采集和信息接口方式降低不少。但是,软件数据的实时性存在一定的限制。

2.3 网络爬虫

网络爬虫是模拟客户端发生网络请求,接收请求响应,按照一定的规则,自动地抓取万维网信息的程序或者脚本。现阶段宣传较广的有Python等[4],但是使用爬虫采集数据时存在输出数据多为非结构化数据;只能采集网站数据,容易受网站反爬机制影响;使用人群狭窄等缺点。想要使用网络爬虫技术进行数据采集,需要有专业的编程知识才能玩转。

2.4 开放数据库方式

开放数据库是采集融合数据最直接的一种方式。与其他信息数据采集一样,它也有自己的优点和不足。

开放数据库方式的优点:能够实现对目标数据的直接获取,即便在信息承载量庞大的数据库中,也可以很容易查询到所需要数据,且准确性很高。

开放数据库方式的不足:基于任何目的和目标的数据获取行为,都必须有协调各厂商数据库作为支持,也就是说,若其中某一家或某几家厂商出于安全角度不同意数据库协调,该方式便无法发挥作用。

3 商品信息采集技术的实现

本次实验使用Python3.0作为编程语言,使用Splash模拟浏览器操作,并对商品页面中的Java cript代码进行预渲染,爬虫部分使用了Scrapy爬虫框架对数据进行抓取和解析,数据的持久化储存选择了MongDB[5]。

3.1 主要组件介绍

Splash的本质是一个轻量级Web2浏览器,作为一种Java cript渲染引擎,Splash的功能包括以下几个方面:第一,相同时间段及同一时刻可处理两个或两个以上的Web页面。第二,为用户返回经过渲染的页面。第三,以最合理的方式阻止图片加载,充分提升页面渲染速度。第四,在 pagecon text中自动执行已被定义的(用户)Java cript脚本。

值得注意的是,Splash在返回document树结构时是以HTML的形式来完成的,因此可以选择自己所擅长的HTML解析器进行页面解析。Splash在执行脚本任务时,若脚本内容是由用户以自定义方式进行编写的,那么它将具有相应的浏览器自动化功能,可被作为浏览器自动化工具进行使用。

作为一种已经非常成熟的爬虫框架,Scrapy在Python支持下,能够为使用者提供很多实用性功能,这会使数据爬取行为更加可靠、有效。selector是Scrapy自带的选择器,借助选择器所提供的功能,用户可以按照自己的想法对数据信息进行提取。比如,通过xpath表达式,在HTML/xml结构中提取出自己感兴趣的数据信息,或者利用css选择器提取自己需要的数据信息,并随着数据提取行为和提取经验,以及提取需求的不断增加,对css选择器功能做进一步扩展。

带有交互式特征的shell控制台,对于完成高质量爬虫程序编写有很大帮助,也支持对程序的调试。其可扩展性表现为支持用户以自定义方式插入中间件,从而达到扩展框架的目的。

在数据库方面,作为当下最流行的数据库系统,MongoDB开源数据库系统应用基础是C++和分布式文件存储,支持Python、Java、PHP等多个主流编程语言;在采集、处理、存储、传递大数据方面,它具有明显优势,核心特征表现为支持高并发,灵活程度高,可靠性强。

3.2 技术实现

实验环境搭建需要从以下几个方面出发:第一,安装Docker。Splash需要在Docker环境下运行,Docker环境创建完成后,需要配置国内镜像源,以解决从DockerHub中拉取Splash镜像慢和拉取失败的问题。第二,安装Scrapy-Splash,提升配置内容使用价值。第三,安装爬虫框架。一般采用pip install scrapy方式进行安装,但经常会遇到超时被抛出问题,导致无法成功下载。对此,选择国内镜像进行下载会提高成功概率。

Scrapy框架结构,以及其内部组件间数据处理方式与具体流向,官方文档已给出详细说明,碍于篇幅有限,这里不做介绍。下面将主要介绍如何在组件工具支持下快速实现多平台数据信息采集。

商品数据采集方式有两种,一是通过Splash对页面中的内容进行动态渲染(模拟浏览器操作的本质也是动态执行自定义js脚本),例如商品检索页面、商品详情页面。采集时,需要将默认的Scrapy Request对象,经过Scrapy-Splash转换为Splash可以接受的Splash Request对象,再由Splash访问对应的页面,返回经过渲染后的内容。二是不经过Splash预渲染,直接对目标数据信息进行访问,并获取所需要信息。例如,在展示商品图片和相关内容的评价信息时,Splash返回商品详情页后,可根据实际需求,以解析的方式获取图片地址。

4 总结

本文对大规模电商的商品信息与大规模电商平台的特征做出了阐释,并就常见的信息采集技术进行分析,最后就面向大规模电商平台的商品信息采集技术进行概述。结果表明,商品信息采集技术能有效采集不同平台的商品数据,具有一定的应用价值和推广性。

猜你喜欢

爬虫页面数据库
利用网络爬虫技术验证房地产灰犀牛之说
刷新生活的页面
答案
基于Python的网络爬虫和反爬虫技术研究
让Word同时拥有横向页和纵向页
基于Scrapy框架的分布式网络爬虫的研究与实现
谁抢走了低价机票
数据库
数据库
数据库