Boss爬虫&数据分析ETL&BI数据可视化展示&Echarts

该项目着眼于就业形势,分析各行业供需与薪酬。使用webmagic、selenium等技术爬取数据,经解析、结构化、持久化后,通过springboot交互并部署于Linux。项目总结了遇到的问题,如反扒、数据处理等,还列出待解决的bug、待优化之处及扩展计划,如增加可视化功能等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目网址:http://47.242.82.87:8089/

项目效果图:

全国的岗位供需

  1. 项目说明

首先着眼于当下严峻的就业形势,我们需要知道各个行业的供需关系以及薪酬范围.大到全国薪酬,小到城市平均薪酬,细致到每个公司历史招聘数据都要保留并加以分析

  1. 技术栈

爬虫:webmagic框架+selenium爬取动态页面

Springboos数据交互

Dom4j解析数据

IO流递归读取文件

Linux shell命令

Html.css.js

  1. 流程

3.1首先使用爬虫实现动态页面的数据捕获

3.2 输出流将元数据保存成文件

3.3读取数据文件

3.4 数据结构化

3.5 数据持久化

3.6 搭建springboot进行数据交互

3.7 将前面的步骤抽象优化,并交由springboot管理

3.8  linux部署

4.实现

代码很全,具体参考源码

5.遇到的问题总结

1.webmagic爬取动态加密页面,需要耗费大量时间研究解密策略,直接使用selenium获取动态数据

2.反扒机制封IP,购买ip池,当检测到异常页面时自动更换IP,继续当前爬取任务

3.webmagic爬虫监控,单纯maven项目无法解决依赖问题,直接使用springboos管理依赖就可以监控爬虫

5.递归获取文件,先递归获取所有文件路径全名存储,然后在遍历集合进行IO读取

6.数据解析,使用dom4j的时候,无法解析双标签中存在的单标签,所以需要熟悉数据结构,将单标签处理删除掉

7.数据结构化,数据结构化的时候,需要创建实体类进行管理,实体类的属性需要匹配相应字段,不呢全部为string,例如薪酬字段是2k-3k,200元/天 这种数据,就需要正则替换.并且调用integer.pasint进行转换包装.其次想要数据持久化,需要考虑表结构的问题,留出富裕属性,增加项目的扩展性,避免新的需求出现时需要更改全部代码

8.脏数据处理,当出现重复数据的时候,合理使用hashset去重属性直接去重而不是到数据库中处理.如果存在特殊字符,使用黑名单+白名单进行数据过滤

9.数据持久化,持久化的时候,需要考虑数据量,查询效率,字段名称是否合理等问题

10.manager管理全流程,当你要把全部操作都交给springboot管理时,会出现很多问题,这时候就要考虑合理使用try catch,什么时候抛异常,什么时候忽略异常,并且要考虑管理时存在的交互问题

6.待解决的bug

1.mybatis的int类型注入问题,因为要在薪酬中匹配范围,所以要传入int类型的值,但是总是一传入就报错,也不知道是哪里的问题,int和integer都试过了都不可以

2.selenium的linux部署问题,selenium的linux 环境配置不太友好,命令行模式并不能打开google chrome,而且system,config配置中显然无法配置selenium的环境变量

3.webmagic的多个问题:1.pipline的数据下载问题2.自定义pipline类的问题3.指定不能访问更多分页的api设计技术问题,屏蔽掉继续爬取数据的来源4.多线程异步爬取数据时数据安全问题

7.待优化的地方

1.SpiderManage的源码暴露在外,并且很简陋,没有进行解耦操作

2.数据量过大会让动态渲染的过程卡顿,为了提升用户体验应该进行分页操作,而分页操作的配置又很麻烦,这就是在项目初始没有想好架构的问题,导致扩展性差,想要添加功能就要改变大部分源码.

3.处理数据时对性能过高的开销,因为整个过程中为了实现解耦,创建了多个list和set集合,并且没有交由spring管理,导致处理数据时占用内存稍高

4.表架构设计时没有考虑分区,每日相同数据无法分辨,需要添加字段进行分辨

8.扩展计划

1.增加数据可视化功能,对地点-工作岗位-工资薪酬-供应需求4个维度进行可视化

2.增加公司维度数据分析,记录每个公司历史数据

3.增加公司权重分析,增加新的爬虫对数据中的公司进行更全面的数据获取,并且为其添加标签,以及权重

4.增加boss爬虫的第二维度数据获取

5.完善webmagic框架,进行扩展监控,和自定义pipline

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值