Java 项目——探索古诗秘密

1. 简介

该项目主要是通过爬取网络上的古诗,并对其进行数据的清洗,存储以及分析,根据所得的可视化结果获取一些有关古诗的小秘密。 

2. 前言

我们从小就学习了许多的古诗,同时大数据也比较火热,我就将两者联系起来。这样,即初步了解了数据分析的基本流程,也锻炼了用所学技术解决问题的能力,同时还从中了解到一些古诗中的小秘密。将编程与生活联系起来,为编程增加了不少乐趣。

这个只是第一个版本,后续我还会把这个项目用Spring等框架优化一下。

3. 功能实现

  • 数据的采集、解析与存储
  • 数据的访问、分析与可视化展示
    • 在该项目中数据的分析为两点
      • 统计诗人与其创作诗歌数量之间的关系
      • 统计古诗中的高频词

3. 模块划分

  • 3.1 爬虫

    • 采集
      • 模拟浏览器发出请求,获取网页数据。
    • html文档解析
      • 将采集到的网页,通过对标签进行解析,获取到文档片段。
    • 数据存储
      • 将爬取的数据存入数据库。
  • 3.2 数据分析

    • 数据访问
      • 从数据库中获取数据。
    • 数据分析
      • 对数据进行简单的分析
    • Web接口
      • 构建Web应用

4. 功能分析

利用Maven管理该项目。

  • 4.1 前期分析

    • 利用第三方工具 htmlunit 来实现对数据的采集和解析。以流的形式来处理,dom解析。该工具能够将dom中的节点(标签)取出。

    • 查询到超链接,爬虫古诗的题目、作者以及诗文内容。为了方便统计,将数据格式化后放到数据库。

    • 由于将采集、解析以及清洗同步进行,效率过低。利用多线程,进行异步处理。
      • 分别使用线程进行采集解析以及传送数据的工作。
      • 利用调度池进行任务的分配(生产者消费者模型),选择固定大小线程池  FixedThreadPool。
      • 采集网页,采集完成后放入队列(生产者)。解析器从队列中获取网页进行解析(消费者),解析完成后放入队列(生产者)。传送管道从队列中获取解析后的数据,存入数据库。
    • 数据的存取:项目中最好不要反复的创建数据库连接,于是使用连接池Druid
    • 分析方式的选取
      • 实时分析
        • 流程:采集、解析、统计分析、存储统计结果
      • 离线分析(本项目数据较小,采用该方式)
        • 流程:采集、解析、存储原始数据、查询、统计分析
    • 利用第三方工具 Echarts 实现数据的可视化
  • 4.2 具体实现

    • 4.2.1 采集 
      • 将网页抽象成Java对象 Page,对链接页与详情页进行区分,以便后续的解析工作。
    • 4.2.2 解析 Parse
      • 详情页:对详情页中的文档片段进行更加细致的信息抽取。
      • 链接页:没有古诗的正文,但有每首诗正文的超链接。通过超链接获取到详情页。
    • 4.2.3 数据存储及访问 Pipeline、AnalyzeDao
      • 利用JDBC,在数据库中进行数据的存取。
    • 4.2.4 数据分析 AnalyzeService
      • 利用sql语句来统计诗人的创作数量
      • 利用ansj实现文本的分词
    • 4.2.5 Web接口
      • 利用 Sparkjava嵌入式Web容器,将可视化结果显示在页面中。

5. 使用技术

  1. Stream和Lambda
  2. 文本分词和解析 ansj 
  3. 多线程
  4. 网页解析工具 htmlunit 
  5. 数据库和JDBC编程
  6. 数据可视化
  7. Sparkjava嵌入式Web容器构建web应用
  8. DIY构建对象管理工厂

6. 代码

https://github.com/qqycc/ancient_poetry

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值