Boss爬虫prd文档

Boss数据分析

  1. 项目说明
    首先着眼于当下严峻的就业形势,我们需要知道各个行业的供需关系以及薪酬范围.大到全国薪酬,小到城市平均薪酬,细致到每个公司历史招聘数据都要保留并加以分析
  2. 技术栈
    爬虫:webmagic框架+selenium爬取动态页面
    Springboos数据交互
    Dom4j解析数据
    IO流递归读取文件
    Linux shell命令
    Html.css.js
  3. 流程
    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

你可能感兴趣的:(总结,大数据,java)