用Python扒出B站那些“惊为天人”的阿婆主是谁?

2023-11-04 05:30

本文主要是介绍用Python扒出B站那些“惊为天人”的阿婆主是谁?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

近期B站的跨年晚会因其独特的创意席卷各大视频网站,给公司带来了极大的正面影响,股价也同时大涨,想必大家都在后悔没有早点买B站的股票:

 

 

数据获取

上面的问题一共获得了859个回答,本文的数据也正来源于此,由于很多回答都会将带有阿婆主ID的链接在回答中体现,如下图所示:

注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

 

我们可以将问题中出现的阿婆主空间id进行了爬取,但考虑到并不是所有回答都会带有这样的ID,于是将一些加粗的字体进行了提取,从中获得一些阿婆主的名称,作为数据的补充:

 

 

上面的这个回答就是一个典型的案例,其中提到了之前非常火的获得库克生日祝福的小学生,提取数据的一些代码如下:

 
upstat = pd.DataFrame(columns=['name','fans','face','main_type','total_video',                                'total_play', 'total_comment']) for i in range(len(spaces)):     try:         time.sleep(1)         space_id = str(spaces[i].replace('/space.bilibili.com/',''))         url= 'https://api.bilibili.com/x/web-interface/card?mid={}&jsonp=jsonp&article=true'.format(space_id)         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=[]         for j in range(total_page):             url = 'https://api.bilibili.com/x/space/arc/search?mid={}&ps=30&tid=0&pn={}&keyword=&order=click&jsonp=jsonp'.format(space_id,str(j+1))             html = requests.get(url=url, cookies=cookie, headers=header).content             data = json.loads(html.decode('utf-8'))             if j == 0 :                  type_list = data['data']['list']['tlist']             this_list = data['data']['list']['vlist']             video_list = video_list + [ this_list [k] for k in range(len(this_list))]         type_list = list(type_list.values())         type_list = {type_list[k]['name']:int(type_list[k]['count']) for k in range(len(type_list))}         this_type = max(type_list,key=type_list.get)         this_play = sum([video_list[k]['play'] for k in range(len(video_list)) if video_list[k]['play'] != '--'])         this_comment = sum([video_list[k]['comment'] for k in range(len(video_list)) if video_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']) for i in range(len(spaces)):     try:         time.sleep(1)         space_id = str(spaces[i].replace('/space.bilibili.com/',''))         url= 'https://api.bilibili.com/x/web-interface/card?mid={}&jsonp=jsonp&article=true'.format(space_id)         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=[]         for j in range(total_page):             url = 'https://api.bilibili.com/x/space/arc/search?mid={}&ps=30&tid=0&pn={}&keyword=&order=click&jsonp=jsonp'.format(space_id,str(j+1))             html = requests.get(url=url, cookies=cookie, headers=header).content             data = json.loads(html.decode('utf-8'))             if j == 0 :                  type_list = data['data']['list']['tlist']             this_list = data['data']['list']['vlist']             video_list = video_list + [ this_list [k] for k in range(len(this_list))]         type_list = list(type_list.values())         type_list = {type_list[k]['name']:int(type_list[k]['count']) for k in range(len(type_list))}         this_type = max(type_list,key=type_list.get)         this_play = sum([video_list[k]['play'] for k in range(len(video_list)) if video_list[k]['play'] != '--'])         this_comment = sum([video_list[k]['comment'] for k in range(len(video_list)) if video_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  for i 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)     if i % 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站粉丝达到两位数的知名(才怪)阿婆主

注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

用手工耿在B站播放量最多的一个视频作为本文的结尾,这个视频非常好的体现了本文“惊为天人”的主题,也希望大家能亲自去尝试一下,如果用完还能四肢健全地写下使用感受,欢迎与我们分享
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

这篇关于用Python扒出B站那些“惊为天人”的阿婆主是谁?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343568

相关文章

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle