bilibili爬虫+数据分析

Python爬虫+数据分析+数据可视化实战

  • Python爬虫+数据分析+数据可视化实战
    • 1. 背景介绍
    • 2. 需求目标
    • 3. 基于urllib的bangumi和bilibili一键爬虫脚本的编写
      • 3.1 bangumi网站分析及爬虫脚本的编写
        • 3.1.1 网站分析
        • 3.1.2 代码实现
      • 3.2 bilibili网站分析及爬虫脚本的编写
        • 3.2.1 网站分析
        • 3.2.2 代码实现
    • 4. 基于pandas的综合数据分析和基于matplotlib的数据可视化
      • 4.1 导入依赖库
      • 4.2 数据清洗
        • 4.2.1 日期型数据处理
        • 4.2.2 bilibili评分缺失值处理
      • 4.3 基本描述统计
        • 4.3.1 bilibili评分
        • 4.3.2 bangumi评分
      • 4.4 bangumi动画作品数据分析
        • 4.4.1 每个动画公司各年度制作了多少动画
        • 4.4.2 总的动画制作分布
        • 4.4.3 每个动画公司制作的动画部数及平均评分
        • 4.4.4 2000-2019年热门动画作品及趋势分析
      • 4.5 两站动画匹配与数据库的合并
        • 4.5.1 匹配策略
        • 4.5.2 查询脚本
        • 4.5.3 信息匹配
        • 4.5.4 数据库合并
      • 4.6 两站评分综合分析
        • 4.6.1 相关性分析与散点图
        • 4.6.2 气泡图、二维频次直方图与三维柱状图
        • 4.6.3 箱线图
        • 4.6.4 两网站评分特征及原因推测
        • 4.6.5 总结
    • 5 结语

1. 背景介绍

哔哩哔哩(www.bilibili.com,英文名称:bilibili,简称B站)现为中国年轻世代高度聚集的文化社区和视频平台,该网站于2009年6月26日创建。

B站早期是一个ACG(动画、漫画、游戏)内容创作与分享的视频网站。经过十年多的发展,围绕用户、创作者和内容,构建了一个源源不断产生优质内容的生态系统,B站已经涵盖7000多个兴趣圈层的多元文化社区。
哔哩哔哩作为目前国内最大的动画作品平台,已上线了3000多部来自日本、美国以及国内的动画作品,具有大量的播放、点赞、弹幕、评分等数据可供分析。

bangumi(bangumi番组计划,bangumi.tv)是专注于ACG领域的网站,是国内专业的动画评分网站。该网站可看作动画作品的数据库,拥有万余部动画作品的详细数据,包括集数、播放时间、监督以及评分、评分人数等信息等可供分析。

2. 需求目标

  • 编写一键爬虫脚本获取两个网站的动画作品数据
  • 对两网站的数据进行分析,其中对于评分进行相关性分析
  • 可视化展示数据

3. 基于urllib的bangumi和bilibili一键爬虫脚本的编写

3.1 bangumi网站分析及爬虫脚本的编写

3.1.1 网站分析

首先打开bangumi首页,并登录。登录后刷新页面,并用fiddler抓包,获取请求头:

bilibili爬虫+数据分析
打开一个需要爬取的动画作品页面,需要爬取的信息有5部分:
  1. 作品原名与类型
  2. 作品详细信息
  3. 作品简介
  4. 作品tags
  5. 作品评分数据

bilibili爬虫+数据分析
  • part2

    bilibili爬虫+数据分析
  • part4

    bilibili爬虫+数据分析

获得对应的源代码位置后,便可以用beautifulsoup包对网页html进行解析获取数据了。

目前的问题是如何获取尽量多的作品数据。

根据网页地址,访问某部作品的页面应为(后面的数字称为subject号),所以可以从1开始遍历所有的subject号,这理论上可行,但实际操作中发现了两个问题,一是subject号目前超过20万,全部遍历所需时间太长;二是并不是所有作品都是动画作品,还可能是书籍、音乐、游戏等:

  • 例:漫画

    bilibili爬虫+数据分析

所以必须找到其他方法。注意到bangumi作为评分网站具有排行榜功能:

bilibili爬虫+数据分析

不需通过ajax请求获取某段排行的数据,这对于爬虫是非常友好的。

考虑到能上榜的作品都具有一定人气,并且只有评分人数达到一定数量评分才更有代表性,所以决定按照排行榜爬取这5800多部动画作品subject号,再访问各自的页面获取详细信息。


3.1.2 代码实现

  1. 模块的导入
  1. 总榜subject号爬取
  1. 详细信息爬取

来源:14岁醋酸铜

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月3日
下一篇 2020年6月3日

相关推荐