介绍

商品比价系统(基于网络爬虫)

  1. crawler:采用的是selenium框架(java实现),用它来爬虫,并将爬取的商品数据入库。
  2. display:是网页展示模块,你可以在该模块搜索需要比价的商品。查看商品的价格变化曲线,商品评分等。
  3. search:查询模块,采用lucene全文检索框架,建立倒排索引以及分词搜索
  4. evaluate:商品信息分析,对库中的数据进行分析打分,将更优秀的商品展示给用户。(基于商品销量、商品评论量、商品收藏量、粉丝数等条件打分)
  5. management:项目模块管理,心跳机制,可以监控当前各模块的健康状况。

软件架构

由springboot开发、各模块之间通过Dubbo进行方法调用、Zookeeper作为服务注册中心、消息队列采用了activeMq(目前生产都不用了,原因是开发社区、性能因素),版本控制采用Maven、Mysql8.0

后续改进方向

  1. crawler:目前采用的是java爬虫,如果需要更专业的爬虫,你可以采用 python实现 。另外需要考虑的是电商网站的反爬技术,否则会出现如下场景:

还有如果你需要登录一个天猫淘宝账号进行爬虫,那么一段时间后,你的登录token也会过期,此时就会出现如下页面:

  1. crawler:由于后续业务发展,爬虫获取到的数据量会非常大,单机Mysql已无法承载,你需要考虑进行 分库分表
  2. search: lucene是一个比较老的全文检索框架,它没有集群方案。面对大数据量、准实时的商品信息搜索,你需要使用当前比较流行的 ElasticSearch 去优化它。我在代码里已经留了接口,你可以增加一个实现。
  3. evaluate:当前的商品评价模型相对比较简易,如果需要更加可靠的商品评价方案,你需要去改进它。

效果展示

1.用户进入商品比价网站,在页面上方搜索框输入想要搜索的商品关键词,点击搜索,就可以搜索到相关商品的信息。在搜索结果中,可以查看搜索到相关商品的数量、商品的图片、商品描述、商品价格、评论数量、所在商城、商品评分和推荐理由等信息。同时用户可以对搜索结果进行价格、销量进行排序,根据商品的价格区间进行筛选,来满足用户的个性化需求。在搜索结果上方可以看到商城报价的筛选条件,选中相应的商城,可以看到本商城的商品信息,在此基础上,商品显示采用分页显示,提高网页的加载速度和渲染效果,提高用户的购物效率。

2.数据爬取模块是将爬取到的商品过滤后保存在数据库中,提供系统的数据支撑。数据主要包含商品编号、商品名称、商品历史价格、商品分类ID、商品分类名称、销量、评论量、收藏量、库存量、发货地址、店铺ID、店铺名称、商品图片、店铺描述评分、店铺服务评分、店铺物流评分、商品规格信息、商品URL、商品详情、商品系统评分、推荐理由、爬取时间、当前价格等字段,爬取工具采用selenium驱动浏览器(FireFox)进行商品信息爬取。

3.商品搜索模块会将数据库中的商品信息进行分词索引,保存在内存或磁盘中,供Lucene全文检索使用,以此来提高搜索的效率。通过Lucene索引查看工具Luke对索引信息进行查看,在该图的左上角可以看到索引存储的位置、索引的域空间数量(Number of fields)、被索引的文档数目(Number of documents)等信息,在该图下方,可以查看不同的域索引所占的不同比率,代表每个域中的数据量不同,从图中可知,商品名称(productName)所占的数据量最大,为30.64%,可见商品数据中商品名称占了较大的一部分。选中其中一个域,可以看到当前域中索引的详细信息,包含索引内容(Text),如此处的“新款”,“音响”等,以及相应索引出现的频率(Freq)。这些都是Lucene全文检索时必须的数据基础。

4.商品评价模块负责对商品信息进行评价,评价结果包含商品评分以及推荐理由。商品评分采用商品的模糊评价模型,推荐理由主要包含一些可量化的维度,如销量、商品描述、商品评价等。不同的商品评分将会影响到商品搜索的结果,评分较高的商品将优先展示给用户。

5.后台管理模块包含模块监控、评价模型配置、商品信息维护功能。
在模块监控中,各模块采用Sigar工具包获取到当前服务器的网络延迟、带宽占用、内存占用、CPU占用等信息并返回给后台管理系统,系统管理员可以看到当前正在运行的所有模块信息,做到系统的及时预警与防护,提高系统的安全性。同时后台管理员可以对模块信息进行管理,对有问题的模块信息进行新增、修改或删除。

评价模型配置功能可以对评价模型的权重指标进行配置,来修改模型各指标的权重系数,提供模型的灵活性,降低维护成本,能及时适应不同的评价指标。

商品信息维护页面可以对不符合条件的商品数据进行维护,从数据库中通过JAVA的javax.validation包筛选出不符合条件的商品数据,并给出不符合的理由,后台管理员可以对不符合条件的数据一目了然,点击上方“更新数据”按钮对数据库数据进行更新,同时可以对商品信息进行修改与删除操作。

如何启动它

  1. crawler:如果采用selenium进行爬虫,你需要安装浏览器与对应的浏览器驱动。我用的是firefox:82.0.3 (64 位),对应的浏览器驱动上传了一份在 price-parity-of-commodities/ geckodriver.exe 根目录下,你可以修改crawler/src/main/resources/application.properties中的配置来修改
diff.broswer.path=D:\\ruanjian\\firefox\\firefox.exe
diff.broswer.driver.path=D:\\webDriver\\geckodriver-v0.23.0-win32\\geckodriver.exe

2、数据库表设计,你可以参考crawler/src/main/resources/application.properties中的数据库连接来配置该数据库(因为脚本找不到了,只留下文档):

spring.datasource.url = jdbc:mysql://localhost:3306/products?serverTimezone=UTC&useSSL=false

数据库名称:products
商品信息表(product)25个字段

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
商品编号 product_id varchar(32)
商品名称 product_name varchar(256)
商品价格(历史价格 ‘,’隔开) price text
商品分类ID category_id varchar(32)
商品分类名称 Category_name varchar(32)
销量 sellCount varchar(32)
评论量 reviewCount varchar(32)
收藏量 collectCount varchar(32)
库存量 stock Int(8)
发货地址 Delivery_Add Varchar(32)
店铺ID Shop_id varchar(32)
店铺名称 Shop_name varchar(256)
商品图片 Product_img text
店铺描述评分 Shopdsr_ms Double(2)
店铺服务评分 Shopdsr_fw Double(2)
店铺物流评分 Shopdsr_wl Double(2)
商品sku信息 product_sku text
商品URL Product_Url varchar(1024)
商品详情 Product_detail text
商品系统评分 Product_score Double(4)
推荐理由 Recommended_reason varchar(1024)
爬取时间 Update_time text
备用字段1(当前价格) spare_field1 double
备用字段2 spare_field2 text
备用字段3 spare_field3 text

商品种类信息表(category)

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
商品种类ID category_id varchar(32)
商品种类名称1 category1_name VARCHAR(64)
商品种类名称2 Category2_name VARCHAR(64)
商品种类名称3 Category3_name VARCHAR(64)

代理ip信息表(proxyIp)

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
Ip地址 Ip_address varchar(32)
Ip端口号 Ip_port VARCHAR(8)
服务器地址 Server_address VARCHAR(64)
验证时间 Check_time VARCHAR(64)
更新时间 Update_time date

模糊评价模型一级指标表Indicators1

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
类目名称 Indicators_1_name varchar(64)
类目权重 Indicators_1_weight Double(4,2)
备用字段1 spare_field1 Varchar(128)

模糊评价模型二级指标表Indicators2

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
类目名称 Indicators_2_name varchar(64)
类目权重 Indicators_2_weight Double(4,2)
对应一级类目id Indicators_1_id Int(8)
备用字段1 spare_field1 Varchar(128)

模糊评价模型三级指标表Indicators3

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
类目名称 Indicators_3_name varchar(64)
类目权重 Indicators_3_weight Double(4,2)
对应二级类目id Indicators_2_id Int(8)
备用字段1 spare_field1 Varchar(128)

模块节点信息表(module-info)

伦理名 物理名 属性 主键 外键 说明
编号 id Int(16) Y
模块名称 module_name varchar(64)
模块所在ip Module_ip Varchar(64)
模块所在端口号 Module_port Varchar(8)
延迟(ms) Module_latency Int(8)
带宽占用率 OccupiedRate_of _Bandwidth Double(4,2)
内存占用率 OccupiedRate_of_memory Double(4,2)
Cpu占用率 OccupiedRate_of_cpu Double(4,2)
模块运行状况 Module_condition boolean 模块运行正常与否














基于网络爬虫的商品询价系统的设计与实现相关推荐

  1. 基于网络爬虫的商品询价系统的设计与实现(Python)

    目录 一.前言 1 1.1 背景 1 1.2 用到的技术简述 1 1.2.1 网络爬虫技术 2 1.2.2 UI设计 3 1.2.3 数据库设计 3 二.设计过程 3 2.1 面向对象设计 3 2.1 ...

  2. 基于网络爬虫的新闻实时监测分析可视化系统(Java+MySQL+Web+Eclipse)

    目 录 1 绪论 1 1.1 论文研究背景与意义 1 1.2 论文研究内容 2 2 系统需求分析 4 2.1 系统需求概述 4 2.2 系统需求分析 4 2.2.1 系统功能要求 4 2.2.2 系统 ...

  3. Java基于网络爬虫的股票信息收集软件

    技术:Java等 摘要: 在当今社会,互联网的发展,给人类的生活和工作带来了极大的便利,随着互联网的进步与改革,"大数据"这个词在近几年逐渐的渗透进我们生活中.大数据,它的基本的含 ...

  4. 基于网络爬虫技术的网络新闻分析系统

    20002 基于网络爬虫技术的网络新闻分析系统 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段内容 ...

  5. 基于fiddler的网络爬虫校园网自动登陆系统

    最近校园网(需要WEB登陆)不太稳定,总是掉线,于是想写一个基于网络爬虫的校园网自动登陆系统,让程序自动每隔一段时间自动检测网络连通性,查了一些资料,最后用了Fiddler软件进行网络监听,对网页ht ...

  6. 【毕业设计_课程设计】基于网络爬虫的新闻采集和订阅系统的设计与实现(源码+论文)

    文章目录 0 项目说明 1 项目说明 2 系统需求 3 系统架构 4 效果展示 5 论文目录 6 项目工程 0 项目说明 基于网络爬虫的新闻采集和订阅系统的设计与实现 提示:适合用于课程设计或毕业设计 ...

  7. 基于网络爬虫的XSS漏洞检测技术

    1. 背景和意义 在早期的网站设计中,网页的存在形式都是静态的.静态的网页内容稳定,不会经常更新,但是在后期却不易维护.如果需要维护更新网页,则必须重新编辑HTML网页,因此当网站很庞大的时候,维护静 ...

  8. 【项目精选】基于网络爬虫技术的网络新闻分析(论文+源码+视频)

    基于网络爬虫技术的网络新闻分析主要用于网络数据爬取.本系统结构如下: (1)网络爬虫模块. (2)中文分词模块. (3)中3文相似度判定模块. (4)数据结构化存储模块. (5)数据可视化展示模块. ...

  9. 基于网络的虚拟仪器测试系统

    引 言 著名科学家门捷列夫说:"没有测量,就没有科学".测量科学的先驱凯尔文又说,一个事物你如果能够测量它,并且能用数字来表达它,你对它就有了深刻的了解:但如果你不知道如何测量它, ...

最新文章

  1. 移动端框架如雨后春笋,你该如何选择?
  2. 桌面虚拟化之资源分配
  3. 企业网络推广专员浅析有利于企业网络推广的页面制作技巧有哪些?
  4. 一个命令kill所有符合条件的进程
  5. 安卓开发要学多久_华为发布鸿蒙2.0,和安卓相似度达80%「西瓜视频」
  6. Hive的安装【完整版】
  7. “约见”面试官系列之常见面试题之第九十篇之页面加载触发函数(建议收藏)
  8. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(开发环境介绍)
  9. linux程序 option,long-option.c/解析命令行参数
  10. 星宿UI V1.1.2 跳转小商店+ wordpress微信小程序
  11. (转)两大量化交易巨头“抱团取暖”:Virtu14亿美元收购骑士资本
  12. 匠心耕耘,新华三大学筑梦远航
  13. WPS 2019使用技巧及WPS2019政府版最全合集
  14. 学习方法——TRIZ创新理论中的八大法则
  15. 深度剖析mongos连接池
  16. 汽车高级驾驶辅助系统ADAS全盘点
  17. 2019数学建模F:数字货币存在是否合理?提供一些思路供思考
  18. 开会总结【1】ADL129
  19. 拓嘉启远电商:如何应付拼多多风控
  20. 【cocos2d游戏开发实战】一款射击类小游戏《Zombie Age》的开发(一)

热门文章

  1. 现货白银价格怎么观察
  2. 用mips汇编实现哈密尔顿回路
  3. OpenCV视频写入详解_Python,视频保存0kb问题
  4. 欧拉角-万象死锁-理解
  5. 2020年二级页表大题
  6. 有用的URL,大量的干货!!!!!!!!!!!!
  7. Connectionist Temporal Classification(CTC)
  8. 2021亚太杯C题(塞罕坝)赛后总结
  9. python二进制反码_认识原码、反码、补码
  10. 百度黄埔学院二期开学,未来“首席AI架构师”齐报道