5 Star 15 Fork 2

markchen7788/利用爬虫进行小说网站数据分析

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

利用爬虫进行小说网站数据分析

介绍

利用爬虫、数据分析和挖掘相关方法进行小说网站的“小说分类”数据分析

软件架构

  1. Javaweb前端负责显示
  2. Javaweb后端负责处理请求,访问数据库
    • controller层 负责处理请求
    • service层 负责业务逻辑处理与数据分析
    • dao层 负责数据库访问
    • bean层 数据库数据模型
  3. 数据爬取和数据清洗使用python脚本完成

安装教程

  1. 项目主体用SpringBoot(eclipse)完成,按照相应方式部署主体即可;
  2. python脚本依赖包
    • 爬虫:requests、beautifulsoup
    • 数据持久化:pymysql
    • 数据清洗:pandas
    • 在Anaconda版本的python中,上述包除pymysql基本都会有,无需另外安装

项目需求分析

  1. 系统主要目的

    • 系统的用户主要是新入行的网络小说作者。
    • 系统可以给用户推荐:
      • 当前比较流行的网络小说类型;
      • 各种类型小说所适合发表的网站;
      • 及各种类型小说所适合的篇幅。
    • 系统主要反映的数据:
      • “各种类型网络小说总量在全网、及各站的情况”
      • “各种类型网络小说热度(点击量、打赏、票等等)在全网、及各站的情况”
      • “全网各种类型网络小说的篇幅与其热度的关系。”
    • 特别说明:系统只爬取“起点”、“晋江”、“飞卢”三个网站作为示例。
  2. 系统应该完成的具体内容:

    • 数据的获取:

      • 用爬虫获取三个网站的数据(详细数据格式参见数据库格式)
    • 数据的清洗:

      • 处理重复的、不完整的、异常的数据
      • 将三个网站的数据的格式统一
      • 数据持久化存储
    • 数据分析:

      • “各种类型网络小说总量在全网、及各站的情况”
        • 获取各类总量并用饼状图显示。
        • 变量一:小说类型
        • 变量二:对应总量
      • “各种类型网络小说热度(点击量、打赏、票等等)在全网、及各站的情况”
        • 获取各类对应的热度(点击量、打赏、票等等)并用直方图显示
        • 横坐标:小说类型
        • 纵坐标:对应热度
      • “全网各种类型网络小说的篇幅与其热度的关系。”
    • 数据挖掘:

      • 推荐全网热度最高的小说类型;
      • 推荐各站热度最高的小说类型;
      • 推荐各类小说适合发表的网站;
      • 推荐各类小说适合的篇幅;
    • 数据的显示:

      • 显示平台:Java Web
      • 结果列表:
        • 全网及各站的分类热度排名
        • 各种类型小说所适合发表的网站
        • 各种类型小说所适合的篇幅
    • 其它:

      • 散点图:
        • 先选择网站,再选择分类,将此网站该分类下的所有小说显示,每个小说相当于一个点,从而拟合出曲线或聚点。在后端处理时,要将只有几千字就弃坑了的那种小说筛掉。纵坐标要能够选择显示内容,如起点只能选择推荐票,飞卢可以选择鲜花、点击数、打赏、月票,晋江为积分、礼物、收藏数、书评数
      • 直方图
        • 选择网站,动态生成该网站每个分类的热度,分类的热度由特定算法实现,热度应当与字数成反比,而与成绩性质数据成正比。
      • 饼状图
        • 选择小说类型,生成各个网站在此分类小说的市场占有量,不只是数量,与字数、人气等也要相关。
      • 输入作者名,获得此作者所有小说加起来的各种数据。

本人参与贡献

  1. 飞卢网爬虫
    • 主要用requests.get()获取网页源代码;
    • 根据网页内容对应标签的CSS选择器,利用beautifulsoup抽取其文本内容
    • 用pymysql持久化数据
  2. 数据清洗
    • pandas、pymysql读取数据库内容;
    • pandas提供了很友好的方法进行数据清洗;
    • 清洗好数据再次持久化数据
    • 数据清洗在数据库中用sql语句完成也是可以的,个人觉得python更加好处理所以采取了这种方法;
    • 如何将类似“30万”这样的数据转换成“300000”?
      • 当时忘记处理这样的数据,后来同伴想出了这样一条很简洁的sql语句帮我解决了这个问题:

      update novel set dashang = (left(dashang,(CHAR_LENGTH(dashang) - 1)))*10000 WHERE dashang like '%万'

  3. 用python画散点图
    • 在探究小说字数和其点击量的关系时,以点击量为纵坐标,字数为横坐标,将所有书籍以点的形式标在图中,画出散点图;
    • 主要用到matlabplot库画图,很方便美观;
    • 最后的项目成品中,程序可以根据散点图拟合出对应曲线,显示字数与点击量的关系。

其它

  • 更多详情参见本人实践文档
  • 程序可运行、可部署jar包见jar包.zip中项目的target目录
    • 先前上传的一些项目缺少一些必要springboot插件和配置,无法生成正确的jar包,静态文件的打包也花费了我很长的时间;
    • 本次项目的配置符合生成jar包的要求,调用maven cleanmaven install即可生成jar包;
    • 服务器或是本地皆可利用java -jar命令运行,linux服务器可用nohup <command> &命令让程序后台执行;

空文件

简介

利用爬虫、数据分析和挖掘相关方法进行小说网站的“小说分类”数据分析 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/markchen7788/big_data.git
git@gitee.com:markchen7788/big_data.git
markchen7788
big_data
利用爬虫进行小说网站数据分析
master

搜索帮助