项目更多开发细节参见:
文章目录
一、项目概述
项目通过爬取 什么值得买 网站的商品数据进行分析与可视化展示,该网站主要发布商品的优惠信息,商品类型多样,其中的商品涉及各大电商平台,通过该网站我们可以获取到其他电商平台部分商品的优惠信息,了解这些信息可以帮助我们以最优惠的价格购买到我们想要的商品。
主要分析以下问题:
- 商品分类、商品品牌、商品购买渠道的分布占比情况
- 用户活跃度(点赞、收藏、评论)与优惠券数量之间的关系
- 商品近十天内每日发布数量
- 商品近十天内每日 点赞/收藏/评论数 最多的商品分类
- 用户活跃度(点赞、收藏、评论)在商品分类、商品品牌、商品购买渠道中的分布占比情况
通过分析这些问题,帮助我们了解用户活跃度较高且优惠力度较大的商品主要集中在哪几类、哪些平台,以提高对这类商品、平台的关注度,即时了解相关的优惠资讯,以免错过相关的优惠活动。
二、项目环境
后端:
后端使用 flask
框架进行开发,借助 pipenv
创建 python(3.9)
虚拟环境和管理相关依赖包。
所涉及到的第三方包有:
flask
、python-dotenv
、pymongo
、flask-cors
、flask-socketio
pandas
、scrapy
、openpyxl
、fake-useragent
。
前端:
前端借助 vue-cli
创建的 Vue2
开发环境。
所涉及到的第三方包有:
axios
、core-js
、echarts
、socket.io-client
、vue
、vue-router
、vue-socket.io
、vuex
。
爬虫: 使用 scrapy
框架创建的爬虫。
数据存储: 数据主要通过 MongoDB
数据库进行存储,爬取的数据可导出为 excel
、csv
格式的文件。
图表: 使用 echarts
。
三、项目功能
1、数据的动态爬取
该项目有两个爬虫程序,因此可对爬取的目标进行选择,一个是 quotes
,该网站是 scrapy 官方教程中提及的网站,此处只用于测试,可进行爬取和数据的存储,但无法将数据展示在网页上,另一个爬虫 smzdm
则是我们分析的目标网站,可对爬取的页面(最新/最热)及存储方式进行选择,右侧则是借助 vue-socket.io
和 flask-socketio
,实现了前端与后端的双向数据通信,将爬取的信息实时展示在网页。
项目截图:
2、文件上传
项目可上传动态爬取后导出的excel文件,上传的文件用于临时查看,数据可选择图形化或表格化的方式进行展示,还可以临时查看数据的商品分类、品牌、购买渠道饼图分布占比情况,最后还可以将上传的数据存储至数据库。
项目截图:
3、商品检索、商品筛选、翻页、导出数据
可通过输入商品名称关键字的方式检索商品,可通过商品的分类、品牌、购买渠道进行商品的筛选。
项目截图:
4、图表展示
涉及到的图表有柱状图、折线图、饼图、堆叠折线图,图表附带相关的文字分析说明。
界面展示:
饼图:
折线图:
堆叠折线图:
5、商品详情信息展示、收藏/删除商品
点击商品后可查看商品的详情信息,商品信息包括商品的名称、优惠说明、商品分类、购买平台,优惠券(点击可跳转相关页面进行领取)、商品介绍等。
6、根据收藏的商品的分类进行推荐
商品收藏后可在个人中心界面进行查看,可根据收藏的商品的分类进行商品的推荐。
个人中心页收藏商品展示:
商品推荐页:
四、项目动图演示(动图全部大小约为30M,注意流量)
1、数据获取
2、文件上传
3、数据展示、翻页、删除
4、图表展示
用户活跃度饼图:
柱状图:
商品分类饼图:
5、商品详情信息展示
6、商品筛选、商品检索、导出数据
7、商品收藏后推荐
商品收藏后根据商品的分类进行相关推荐:
五、项目总结
通过分析该网站的部分数据后发现,该网站发布的商品主要以食品类为主,其次则是一些日常的生活用品,这两类商品的用户活跃度也相对较高、优惠券数量也相对较多。在分析用户活跃度与优惠券数量之间的关系时发现,优惠券数量多的商品用户活跃度也相对较高,两者整体呈正相关,但是这也并非绝对,因用户可发布多条评论,而收藏和点赞只能执行一次操作,所以用户活跃度受用户评论数量影响大,在分析其他图表时还发现,虽然有些电商平台的优惠券数量并不多,但用户活跃度却仍占有一定比例,所以这可能还与电商平台的知名度存在着一定的联系。
项目更多开发细节参见: