B站那些“惊为天人”的阿婆主是谁?用Python扒出结果
前言
近期B站的跨年晚会因其独特的创意席卷各大视频网站,给公司带来了极大的正面影响,股价也同时大涨,想必大家都在后悔没有早点买B站的股票:
注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此我建了个python学习资源群里面有最新学习资料,如果你想学python,可以关注我,后台私信我 ‘py’ 自动获取最新python教程资料!还有老司机解答哦!
然而今天我们要讨论的不是B站的跨年晚会,而是B站的核心资源:“惊为天人”的阿婆主们,文章的灵感来自于知乎热榜上的一个问题:
数据获取
上面的问题一共获得了859个回答,本文的数据也正来源于此,由于很多回答都会将带有阿婆主ID的链接在回答中体现,如下图所示:
我们可以将问题中出现的阿婆主空间id进行了爬取,但考虑到并不是所有回答都会带有这样的ID,于是将一些加粗的字体进行了提取,从中获得一些阿婆主的名称,作为数据的补充:
上面的这个回答就是一个典型的案例,其中提到了之前非常火的获得库克生日祝福的小学生,提取数据的一些代码如下:
upstat = pd.DataFrame(columns=['name','fans','face','main_type','total_video', 'total_play', 'total_comment']) fori in range(len(spaces)): try: time.sleep(1) space_id = str(spaces[i].replace('/space.bilibili.com/','')) url= 'https://c.quk.cc/3/z8/kq5mkkeutju html = requests.get(url=url, cookies=cookie, headers=header).content data = json.loads(html.decode('utf-8'))['data'] this_name = data['card']['name'] this_fans = data['card']['fans'] this_face = data['card']['face'] this_video = int(data['archive_count']) total_page = int((this_video-1)/30)+1 video_list=[] forjin range(total_page): url = 'https://c.quk.cc/3/z8/mgyk30vzr1r html = requests.get(url=url, cookies=cookie, headers=header).content data = json.loads(html.decode('utf-8')) ifj== 0: type_list = data['data']['list']['tlist'] this_list = data['data']['list']['vlist'] video_list = video_list + [ this_list [k] forkin range(len(this_list))] type_list = list(type_list.values()) type_list = {type_list[k]['name']:int(type_list[k]['count']) forkin range(len(type_list))} this_type = max(type_list,key=type_list.get) this_play = sum([video_list[k]['play'] forkin range(len(video_list)) ifvideo_list[k]['play'] != '--']) this_comment = sum([video_list[k]['comment'] forkin range(len(video_list)) ifvideo_list[k]['comment'] != '--']) upstat = upstat.append({'name':this_name, 'fans':this_fans, 'face':this_face, 'main_type':this_type, 'total_video':this_video, 'total_play':this_play, 'total_comment':this_comment}, ignore_index=True) print('success:'+str(i)) except: print('fail:'+str(j)) continue
现在获取到了要这些“惊为天人”的阿婆主们的ID,下一步要做的就是需要爬取他们B站的个人空间,获得更多详细的信息:
上面就是B站知名科学家手工耿的个人空间,从中我们可以获取手工耿的粉丝数,视频主要类型(一直以为应该是科技,没想到居然是生活,B站节操可以的)以及所有视频平均的播放量、弹幕数、评论数,作为后续进行排名的依据,部分代码如下:
upstat = pd.DataFrame(columns=['name','fans','face','main_type','total_video', 'total_play', 'total_comment']) fori in range(len(spaces)): try: time.sleep(1) space_id = str(spaces[i].replace('/space.bilibili.com/','')) url= 'https://c.quk.cc/3/z8/kq5mkkeutju html = requests.get(url=url, cookies=cookie, headers=header).content data = json.loads(html.decode('utf-8'))['data'] this_name = data['card']['name'] this_fans = data['card']['fans'] this_face = data['card']['face'] this_video = int(data['archive_count']) total_page = int((this_video-1)/30)+1 video_list=[] forjin range(total_page): url = 'https://c.quk.cc/3/z8/mgyk30vzr1r html = requests.get(url=url, cookies=cookie, headers=header).content data = json.loads(html.decode('utf-8')) ifj== 0: type_list = data['data']['list']['tlist'] this_list = data['data']['list']['vlist'] video_list = video_list + [ this_list [k] forkin range(len(this_list))] type_list = list(type_list.values()) type_list = {type_list[k]['name']:int(type_list[k]['count']) forkin range(len(type_list))} this_type = max(type_list,key=type_list.get) this_play = sum([video_list[k]['play'] forkin range(len(video_list)) ifvideo_list[k]['play'] != '--']) this_comment = sum([video_list[k]['comment'] forkin range(len(video_list)) ifvideo_list[k]['comment'] != '--']) upstat = upstat.append({'name':this_name, 'fans':this_fans, 'face':this_face, 'main_type':this_type, 'total_video':this_video, 'total_play':this_play, 'total_comment':this_comment}, ignore_index=True) print('success:'+str(i)) except: print('fail:'+str(j)) continue
最终我们就获得了B站200多位“惊为天人”的阿婆主们的信息,概览数据如下:
总体概览
获得了这些数据之后,我们首先看一下这些“惊为天人”阿婆主们发布的视频主要类型分布:
由于B站生活的分类中包罗万象,手工耿和李子柒都被划归到了生活类,想想都玄幻,因此这一类型的视频是分组多的,另外科技和数码类的占比也是非常多的,印证了B站是个优秀的学习网站的结论,有兴趣的可以参照另一篇文章:你相信逛B站也能学编程吗?
除此之外的视频可统称为娱乐类,包括了游戏、影视这些,之后会将视频类型按照科技、生活、娱乐进行大的划分,寻找各个类别最为“惊为天人”的阿婆主。
在开始进行正式的排名前,首先用Python将这些阿婆主的头像进行拼接,获得下面的图片,看看一眼望去有多少是你非常熟悉的阿婆主:
这部分代码如下:
i = 0 fori in range(upstat.shape[0]): loc= 'D:/爬虫/惊为天人/'+upstat['name'][i]+'.jpg' # request.urlretrieve(upstat['face'][i],loc) img = mpimg.imread(loc)[:,:,0:3] img = cv2.resize(img, (500,500),interpolation=cv2.INTER_CUBIC) ifi % 20== 0: row_img=img elif i == 19: row_img=np.hstack((row_img,img)) all_img = row_img elif i % 20== 19: row_img=np.hstack((row_img,img)) all_img = np.vstack((all_img,row_img)) else: row_img=np.hstack((row_img,img)) i = i+1 plt.axis('off') plt.margins(0,0) plt.imshow(all_img) plt.savefig('头像.png',dpi=1000)
综合排名
下面要做的事情就比较大胆,要斗胆为这些阿婆主们进行排名,综合考虑他们的粉丝数,视频平均弹幕数、播放量、评论数,获得一个综合的指数,特此声明:本排名仅供娱乐,如要深究,AWSL
首先看一下进入TOP10的阿婆主们:
小编近期刚刚被安利的巫师财经榜上有名,建议大家去看一下,真的是将复杂的金融知识说得很接地气,华农兄弟和敬汉卿两大知名阿婆主也榜上有名,下面再来看下TOP11-20的榜单:
徐大sao,李子柒和手工耿在榜单中同时出现,未来有机会,希望有人能策划一次他们三人之间的合作,流程都想好了,手工耿为李子柒提供后现代的工具,李子柒利用手工耿的神器制作世界上最辣的辣椒,之后由徐大Sao一口吃掉,手工耿最后再用自己的脑瓜崩为徐大Sao缓解辣椒带来的不适感
分类排名
进行完综合排名之后,下面将所有阿婆主按照科技、生活、娱乐进行综合排名,分别活得各个分类的TOP10:
有了分类排名后,大家就可以按照自己的喜好按需索取,相信看完之后,脑洞会语法变大,一段时间后可以去尝试自己在B站发布视频,成为B站粉丝达到两位数的知名(才怪)阿婆主
最后给大家送一套2020最新python教程:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此我建了个python学习资源群里面有最新学习资料,如果你想学python,可以关注我,后台私信我 ‘py’ 自动获取最新python教程资料!还有老司机解答哦!
用手工耿在B站播放量最多的一个视频作为本文的结尾,这个视频非常好的体现了本文“惊为天人”的主题,也希望大家能亲自去尝试一下,如果用完还能四肢健全地写下使用感受,欢迎与我们分享
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。