他爬取了B站所有番剧信息,发现了这些……
本文来自「楼+ 之数据分析与挖掘实战 」第 4 期学员 —— Yueyec 的作业。他爬取了B站上所有的番剧信息,发现了很多有趣的数据~
关键信息:最高播放量 / 最强up主 / 用户追番数据 / 云追番?
起源
「数据分析」从「数据挖掘」开始,Yueyec 同学选择了 BeautifulSoup 来爬取B站的番剧信息。部分代码如下:
# 导入对应的 package
import numpy as np
import pandas as pd
import requests
import bs4
import time
import json
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
font_hei = matplotlib.font_manager.FontProperties(
fname=r"SimHei.ttf", size=15) # 设置中文字体
def get_data(base_url, page):
"""
获取B站单个页面的视频信息
base_url: json的api
page: 页数
return 一个二维的list,16列
"""
url = base_url.format(str(page)) # 得到对应的url
response = requests.get(url, headers=header) # 发出请求,获取回应
videos = pd.read_json(response.text[37:-1]).iloc[:, 3].iloc[0] # 获取列表
videos_list = [] # 用来储存数据
for video in videos: # 循环每个番剧
video_inf = [] # 用来储存每个番剧的信息
video_inf.append(video['stat']['aid']) # av号
video_inf.append(video["title"]) # 标题
video_inf.append(video['owner']["name"]) # 上传者
video_inf.append(time.ctime(video['pubdate'])) # 上传时间
video_inf.append(video['stat']['view']) # 观看人数
video_inf.append(video['stat']['danmaku']) # 弹幕数
video_inf.append(video['stat']['reply']) # 评论数量
video_inf.append(video['stat']['favorite']) # 收藏数量
video_inf.append(video['stat']['coin']) # 投币数
video_inf.append(video['stat']['share']) # 分享数
video_inf.append(video['stat']['like']) # 点喜欢的人数
video_inf.append(video['stat']['dislike']) # 点不喜欢的人数
video_inf.append(video['stat']["now_rank"]) # 排名
video_inf.append(video['stat']["his_rank"]) # 排名
video_inf.append(video['tname']) # 标签
video_inf.append(video['desc']) # 描述
videos_list.append(video_inf)
return videos_list
完整的代码可在文末查看。
数据清洗
数据分析前,我们要对数据进行清洗。
爬取数据后,发现有些视频的播放次数为-1,可能是由于版权、封号等问题下架的视频,大约有1000多个。
data[-1 == data['观看次数']]
清洗掉这些脏数据,清洗完成后,就可以分析拿到手的数据了。
data.drop(data[-1 == data['观看次数']].index, inplace=True)
完整的代码可在文末查看。
最勤劳的up主
开始数据分析环节,我们先来看看谁是最勤劳的up主,他贡献了全站四分之一的番剧,猜猜他是谁?
# 查看up主投稿的数量
data.groupby("up主").count().sort_values("av号", ascending=False)
# 根据up主投稿的数量排序
统计发现:大致四分之一是 哔哩哔哩官方 发布的,排第二的则为「小清水亜美」,搬运了3218 集的番剧,第三位为 东京电视台。
完整的代码可在文末查看。
收藏量和播放量最高的番剧
收藏量和播放量最高的番剧都是哪部?结果可能会大大出于意料……
data.sort_values("收藏", ascending=False).reset_index(drop=True)
# 收藏数量排序
统计发现,收藏的番剧中,很多都是剧场版,可能是相对于TV版,剧场版制作更精良的缘故。在具体排序中,排第五的居然是本月10号上传的番剧,这点很意外。
播放量最高的番剧又是哪个呢 :
data.sort_values("观看次数", ascending=False).reset_index(drop=True)
分析结果:
1. 排名最高的「工作细胞」的播放量几乎达到了4000千万,远超第二部。
(「工作细胞」中,在国内外都引起风潮的“血小板”)
2. 前五名中,「Overlord」出现了三次,果然是公认的B站霸权的番剧。
3. 排名靠前的几部,都是番剧的第一集。
完整的代码和统计结果,可在文末查看。
XX云番剧?
根据用户喜好,智能推荐音乐的应用我们都见过很多,但智能推荐番剧的好像挺少,能不能基于用户数据,做一个推荐番剧的系统呢?
Yueyec 同学进行了实验:
“另外爬取了用户的追番信息来做关联分析,可以查看到哪些番剧是关联比较大的。”
“数据太大,只爬取了一小部分,提供的数据为 ID号为 1 到 20000 号的用户追番数据(对应为bangumi1, bangumi2),实际爬取和处理的为 1 到450000 号的用户。”
一系列操作之后,他得出了这些数据:
“可以看到,其中很多是同一个番剧,只是季数不同。但不少番剧之间也与很高的置信度,我觉得可以用此得到一个简单的推荐算法。”
完整的代码和统计结果,可在文末查看。
中肯的总结和建议
1. 通过这次6周的学习,补充了不少知识,加深了 Pandas 的使用,也了解了时间序列、自然语言等的处理方法。
2. 虽然时间不长,但是对整个过程都有所了解,为将来学习机器学习建立了基石。
3. 部分挑战太简单,建议把挑战换成从头到尾自己实现模型,更能加深印象和具有挑战难度。
4. 第五周的内容展现了不同类型的分析模板,加强了见识也提供了很多扩展的内容。因为并没有完全看完,所以接下来会花部分时间来学习这部分。
除了 Yueyec 同学,还有很多优秀的同学的作品:
这些作品的代码,你可以在浏览器中输入这个链接,或点击阅读原文,再点击「查看更多优秀作品」来查阅。
https://github.com/shiyanlou/louplus-dm/tree/master/Assignments
如果你也想像这位同学一样,系统地学习数据挖掘和数据分析技能,可以了解一下《数据分析与挖掘实战》这门课程,目前已经开到第五期,一线大牛授课,带你在6周内成长为有真实工作能力的数据科学工程师。
现在扫码添加小姐姐微信,还可领取:100元优惠券 + 数据分析与挖掘学习脑图~
点击「阅读原文」,查看课程详情
现在扫码添加小姐姐微信咨询/报名,还可领取:
100元优惠券 + 数据分析与挖掘学习脑图!