我爬取了上万条掘金博客文章🤤,并做了数据分析和可视化🤤(Python大数据)

1,547 阅读4分钟

前言

项目地址:blog_analysis (gitee.com)

关键词:Vue、python、Django、Numpy、Pandas、Matplotlib·····

做什么:对稀土掘金博客进行数据收集、数据预处理、数据存储、数据处理与分析、数据可视化。

项目所分析的最新数据集最后截止日期:2023年12月14日

主要做什么:

  • 数据源展示:展示所爬取的文章数据(后端直接返回11772条数据),支持分页(在前端分页)
  • 文章热度分析:创建一个综合指标,考虑观看次数、点赞数、评论数和星级,以衡量每篇文章的影响力。使用基于加权平均的热度计算:热度 = w1 × 点赞数 + w2 × 评论数 + w3 × 收藏数
  • 创作时间分析:分析总体用户的创作时间偏好:周一到周五的文章比周末的文章多,按小时划分文章发布时间段
  • 文章标签分布:统计了文章的标签分布情况
  • 创作话题分布:统计了文章所关联的掘金官方话题 分布情况
  • 创作标题分布:统计了掘金创作者最喜欢使用的文章标题词汇,以及技术点。使用jieba库分词,和词云、柱状图来展示。由于词云是实时的需要耗费时间,还加了进度条等待。
  • 创作者排行:按创作者文章数量进行排行,选出靠前的劳模

收获:

  • 从周时间分布上看:工作日,用户有更多的时间和精力进行写作。周末写作意愿低。
  • 从24小时分布上看:上午8点至11点以及下午2点至5点的写作量较高。
  • 从热度上看:影响力高的文章,标题都很有趣,有深度有思考。
  • 从文章标签:掘金博客的内容覆盖面广泛,吸引了不同领域的技术人员参与交流和分享。但是也可以看出前端开发是掘金博客的主要内容,也是读者最感兴趣的话题。
  • 从创作标题上看:“如何”,达到了776次,说明掘金博客包含了诸多编程问题的解决方法。
  • 从劳模作者排行看:具有发展潜力的作者有量子位、终有救赎、Yiko、anyup···等,值得关注。
  • ·····
  • 编不下去了😜😜😜(手动狗头护体)

运行效果

登录注册

登录

login.png

注册

register.png

主页

数据源展示可视化

AnSomeone.png

文章热度分析可视化

AnInfluence.png

创作时间分布可视化

AnTimeRank.png

文章标签标签分布可视化

AnCategory.png

AnCategory2.png

文章话题分布可视化

AnTopic.png

AnTopic2.png

文章标题分布可视化

AnTitle.png

AnTitle2.png

AnTitle3.png

AnTitle4.png

创作者排行可视化

AnLaborRank.png

AnLaborRank2.png

关于项目文件的简单介绍

数据采集

本项目爬虫由多个爬虫类同时组成,仅供学习

spider.png

  • BigArticlesSpider.py 在稀土掘金首页无限滚动刷新追加数据,最后爬取一万条基础数据
  • SingleArticleSpider.py 针对单篇文章进行数据爬取,供其他类遍历可实现一万条数据的深度信息爬取。
  • DeepDigBigArticles.py 对一万多条基础数据进行遍历,深度爬取信息
  • ThreedAccelerateSpider.py 上面爬虫类的升级版,使用多线程技术,加速爬取,当然这个下毒了跑不动
  • UserAllArticles.py 针对用户专栏,爬取用户的所有文章
  • UserlmfoSpider.py 针对用户主页,爬取用户的信息
  • MyFormat.py 对爬取生成的csv文件进行转换,产出excel文件

我一天24小时也就礼貌文明地爬个五、六百条,爬了十几天,非常文明。

数据分析处理

多线程加速数据分析实现了,

就在dataProcess\ThreedAccelerateLaborStatistical.py,芜湖!CPU小风扇哐哐转起来!

dataProcess.png

  • CategoryStatistical.py 文章标签分布:统计文章标签的词频,展示各类主题的关注度。
  • InfluenceStatistical.py 文章热度分析:基于加权平均的热度分析计算,量化每篇文章的传播热度。
  • LaborStatistical.py 创作者排行
  • SomeoneStatistical.py 将爬虫爬取存在服务器的数据以json格式返回给前端
  • ThreedAccelerateLaborStatiscal.py 创作者排行:使用多线程技术快速统计每个作者的创作数量,评估其影响力。
  • TimeStatistical.py 创作时间分布:统计用户在一周内每天的创作数和24小时内每小时的创作数,揭示创作时间规律。
  • TitleStatistical.py 创作标题分布:统计文章标题的词频,了解标题的语言风格和习惯。
  • TopicStatistical.py 创作话题分布:统计文章话题的词频,展示热门话题及其变化趋势。
  • Drawlmg.py 使用matplotlib绘制可视化图像

数据可视化

这部分属于前端

  • AnSomeone.vue 数据源展示可视化
  • AnInfluence.vue 文章热度分析可视化
  • AnTimeRank.vue 创作时间分布可视化
  • AnCategory.vue 文章标签标签分布可视化
  • AnTopic.vue 文章话题分布可视化
  • AnTitle.vue 文章标题分布可视化
  • AnLaborRank.vue 创作者排行可视化
  • CoreLogin.vue 登录组件
  • CoreRegister.vue 注册组件

blog_analysis

这部分属于基本的django应用

django.png

和别的django写法不一样的地方就是,我在views.py里面都是返回json数据,对,我没有用模板,而是做成前后端分离。

例如: image.png