基于网络爬虫的购物平台价格监测系统的设计与实现

通过对网络爬虫的购物平台价格监测系统的业务流程进行梳理可知,网络爬虫的购物平台价格监测系统主要由前台买家模块、后台卖家模块以及管理员模块构成。前台功能包含登录功能、注册功能、系统首页功能、唯品会商品详情浏览、唯品会商品收藏、唯品会商品点赞、唯品会商品价格监测、唯品会商品消息提醒、我的个人中心等等、爬虫功能。系统整体功能模块逻辑图如图2-1所示。

图2-1 系统模块图

2.2.1 功能需求

用户和商家操作流程分为以下五个步骤:

1.用户可以浏览唯品会商品的分类、分类下的唯品会商品。首页有轮播图播放,用户可以通过点击进入唯品会商品链接浏览单个(或单类)唯品会商品的具体信息。用户可以根据关键字搜索唯品会商品,然后选购唯品会商品。

2.用户可在线选购自己喜欢的商品进行浏览加购,在唯品会商品详情界面可以点赞、收藏或者取消收藏,加入价格监测等等。

3.用户通过加购到价格监测里的商品,对商品进行在线支付购买。

4.商品价格监测到指定价格,消息提醒到用户。

5.用户买家对自己购买的唯品会商品订单进行收货处理,然后进行评论,可上传图片。

用户成功登录之后,左边会展示唯品会商品分类,点击左边的唯品会商品分类,展示该分类下面的所有唯品会商品,可以根据唯品会商品的名称模糊搜索唯品会商品,对唯品会商品进行模糊匹配搜索操作。通过GoodsController[16]后台控制器,根据GoodsService的QueryGoodsLike方法查询唯品会商品,SQL语句中用到Like模糊匹配查询得到结果,浏览唯品会商品的界面如图4-3所示。

图4-3 浏览唯品会商品界面

4.1.4 唯品会商品搜索

用户登录电商用户唯品会商品购物平台系统之后,可以输入关键字模糊匹配,从而快速匹配关键字相关的唯品会商品,主要原理是通过数据库的“Like”关键字去模糊查询数据库里面的数据[17]。通过GoodsController后台控制器,根据GoodsService的QueryGoodsLike方法查询唯品会商品,SQL语句中用到Like模糊匹配查询得到结果,唯品会商品搜索界面如图4-4所示。

图4-4 唯品会商品搜索界面

4.1.5 查询唯品会商品详情

电商用户唯品会商品详情界面的界面设计是左边展示唯品会商品图片,右边展示唯品会商品名称、具体规格,详情界面具体的功能有加入价格监测,收藏或者取消收藏,超赞功能。

1.价格监测功能:对心仪的唯品会商品可以加入价格监测,进行快速结算;

2.收藏功能:对喜欢的唯品会商品可以加入收藏或者取消收藏;

3.超赞功能:这是本系统设计的特色之处,可以对喜欢的唯品会商品进行超赞,可以点击赞美,增加其次数,次数多的会推荐给用户。

通过CartController控制评论的后台流转,通过CartService对add接口进行操作;通过GuessController控制评论的后台流转,通过GuessService对add或者delete取消收藏接口进行操作。电商用户唯品会商品详情界面如图4-5所示。

图4-5 查询唯品会商品详情界面

4.1.6 加入价格监测

用户选购自己所需唯品会商品,选择数量,加入价格监测,用户可对价格监测进行管理。通过CartController控制评论的后台流转,通过CartService对add接口进行操作,通过add方法操作数据库,价格监测界面如图4-6所示。

图4-6 加入价格监测界面

4.1.7 我的商品监测

用户点击“价格监测”按钮之后,会添加到价格监测列表[18],通过定时任务去定时监测价格,通过MonitorController控制评论的后台流转,,价格监测界面如图4-7所示。

图4-7 订单结算界面

4.1.8 下单成功

用户对唯品会商品订单提交之后,生成订单号,会显示当前订单信息,则下单成功。下单时通过MonitorController控制评论的后台流转,通过MonitorService对commit接口进行操作,通过commit方法操作数据库,下单成功界面如图4-8所示。

图4-8 提交订单界面

4.1.9 支付成功

用户购买支付成功,完成交易。通过MonitorController控制评论的后台流转,通过MonitorService对pay接口进行操作,通过pay方法操作数据库,完成交易界面如图4-9所示。

图4-9 支付成功界面

4.2 爬虫部分的实现

后台管理是包含用户信息管理、唯品会商品分类管理、唯品会商品信息管理、唯品会商品订单管理、评论管理、账户管理等等功能,本章节将会对后台管理功能进行详细的介绍。

4.2.1 爬虫功能

管理员登录是需要进行管理员验证,第一步、打开唯品会网站  https://www.vip.com。然后随意搜索一种商品,比如"键盘",搜索之后下拉发现页面URL没有发生改变,但是商品信息在不断加载,那么这就是动态Ajax技术,遇到这种情况,第一反应就是找接口。

第二步、打开开发者工具,鼠标右键,点击检查,切换到Network选项卡,然后刷新唯品会页面,进行抓包,然后查看每个包的pirview,发现商品信息在‘ v2?callback=getMerchandise’中,我们来看一下URL,不看不要紧,一看吓一跳-_-,这URL也太长了,研究一下参数,发现主要是每件商品都有自己的pid,那么接下来,只要我们找到商品的pid就可以抓取数据了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/447133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RDD算子介绍(二)

1. coalesce 用于缩减分区,减少分区个数,减少任务调度成本。 val rdd : RDD[Int] sc.makeRDD(List(1, 2, 3, 4), 4) val newRDD rdd.coalesce(2) newRDD.saveAsTextFile("output") 分区数可以减少,但是减少后的分区里的数据分布…

政安晨:【深度学习处理实践】(五)—— 初识RNN-循环神经网络

RNN(循环神经网络)是一种在深度学习中常用的神经网络结构,用于处理序列数据。与传统的前馈神经网络不同,RNN通过引入循环连接在网络中保留了历史信息。 RNN中的每个神经元都有一个隐藏状态,它会根据当前输入和前一个时…

SRS(Simple Realtime Server)

SRS(Simple Realtime Server - github) SRS 中文官网 docker安装srs ##(安全组放开1935端口、8080端口) docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 8000:8000/udp -p 10080:10080/udp ossrs/srs:5推流 ## 不需要加端口 ffmpeg…

深度学习armv8/armv9 cache的原理

文章目录 1、为什么要用cache?2、背景:架构的变化?2、cache的层级关系 ––big.LITTLE架构(A53为例)3、cache的层级关系 –-- DynamIQ架构(A76为例)4、DSU / L3 cache5、L1/L2/L3 cache都是多大呢6、cache相关的术语介绍7、cache的分配策略(alocation,…

Python读取influxDB数据库

1. influxDB连接 首先用InfluxDBStudio软件连接influxDB数据库来查看所有表: 2. 写sql语句来查询数据 然后和平时写sql查询语句一样,先创建连接client,然后调用其query函数来查询获取数据 self.client influxdb.InfluxDBClient(hostinflu…

前端文件上传

文件上传方式 前端文件上传有两种方式,第一种通过二进制blob传输(formData传输),第二种是通过base64传输 文件相关的对象 file对象其实是blob的子类 blob对象的第一个参数必须是一个数组,你可以把一个file对象放进去…

HCS-华为云Stack-计算节点内部网络结构

HCS-华为云Stack-计算节点内部网络结构 图中表示的仅为计算节点是两网口的模式,如果是四网口模式,系统会再自动创建一个网桥出来 图中未画出存储平面和Internal Base平面,它们和tunnel bearing、External OM-样,都是通过trunk0的…

模型驱动架构MDA

MDE 模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视…

《量子计算:下一个大风口,还是一个热炒概念?》

引言 量子计算,作为一项颠覆性的技术,一直以来备受关注。它被认为是未来计算领域的一次革命,可能改变我们对计算能力和数据处理的理解。然而,随着技术的不断进步和商业应用的探索,人们开始思考,量子计算到底是一个即将到来的大风口,还是一个被过度炒作的概念? 量子计…

空间复杂度(数据结构)

概念: 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟实践复…

软考73-上午题-【面向对象技术2-UML】-UML中的图4

一、构件图(组件图) 1-1、构件图的定义 展现了,一组构件之间的组织和依赖。 构件图专注于系统的静态实现图。 构件图与类图相关,通常把构件映射为一个、多个类、接口、协作。 【回顾】: 类图展示了一组对象、接口、…

C++之map与set的使用与原理+拓展avl树(详解)

前言:map和set是C里面的两种常用STL容器,他们被设计为关联式容器,这两个容器存储的元素都是唯一的,并且每个元素与键(key)相关联,简单来说就是两个存储不重复元素的容器。那就有人有疑问了&…

PostgreSQL中In, Exists在SQL查询中到底有无区别

前言 SQL查询当中,In和Exists子查询到底有无区别?记得很多年以前,确实是有相关的使用戒条的,或者说存在一些使用的惯用法。试图完全抹开两者的区别,就有点过了。 两者的主要区别: 从目的上讲&#xff0c…

微信小程序开发系列(二十七)·小程序生命周期详细介绍

目录 1. 小程序生命周期介绍 2. 应用生命周期 3. 页面生命周期 1. 小程序生命周期介绍 一个小程序完整的生命周期由 应用生命周期、页面生命周期 和 组件生命周期 三部分来组成。 应用生命周期:是指应用程序进程从创建到消亡的整个过程。 小程序的生命&#…

python——By.ID/By.NAME

一、通过元素的id属性来定位元素 from selenuim import webdriver from selenuim.webdriver.common.by import Bydriver webdriver.Chrome() driver.maximize_window() driver.get(http://xxx) time.sleep(3)# 通过By.ID找到唯一页面元素后,输入abcd driver.find_…

简析内部审计数字化转型的方法和路径

简析内部审计数字化转型的方法和路径 内部审计是一种独立的、客观的确认和咨询活动,包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储,据此再对数据…

华为OD机试 - 模拟数据序列化传输(Java JS Python C C++)

题目描述 模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)编码后数…

VSCode安装C语言编译环境

目录 一、在vscode下载C/C扩展 二、配置gcc环境 1.访问网站:https://sourceforge.net/projects/mingw-w64/files/ 2.解压并复制bin目录 三、配置gcc环境 四、在cmd检查是否配置成功 五、vscode配置gcc环境 六、在vscode运行C文件 运行.c代码 七、在vscode运…

JVM-2

目录 1.虚拟机类加载机制 2.JVM常见回收算法 2.1标记清除算法 2.2标记整理算法 2.3标记复制算法 3.分代垃圾回收机制 新生代收集 第一次垃圾回收 第二次垃圾回收 第N此垃圾回收 老年代收集 4.补充 Stop The World Java的对象结构 1.虚拟机类加载机制 双亲委派模式…

理解STM32的低功耗模式

低功耗模式简介 TM32的低功耗模式是特别设计来减少微控制器在不活跃状态下的能耗。这些模式允许STM32在保持核心功能的同时尽可能减少电力消耗,适合用在电池供电或需长期运行的场景。理解各种低功耗模式如何节能,主要包括以下几个方面: 关闭…