程序员用 Python 扒出 B 站那些“惊为天人”的阿婆主!

2023-11-04 05:30

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

作者 | 徐麟

本文经授权转载自数据森麟(ID:shujusenlin)

前言

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

然而今天我们要讨论的不是B站的跨年晚会,而是B站的核心资源:“惊为天人”的阿婆主们,文章的灵感来自于知乎热榜上的一个问题:

数据获取

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

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

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

# 开始爬取数据
driver = webdriver.Chrome()
driver.maximize_window()
url = 'https://www.zhihu.com/question/291506148'
js='window.open("'+url+'")'
driver.execute_script(js)
for i in range(1000):time.sleep(1)js="var q=document.documentElement.scrollTop=10000000"  driver.execute_script(js)print(i)# 整理数据
all_html = [k.get_property('innerHTML') for k in driver.find_elements_by_class_name('AnswerItem')]
all_text = ''.join(all_html)
pat = '/space.bilibili.com/\d+'
spaces = list(set([k for k in re.findall(pat,all_text)]))

现在获取到了要这些“惊为天人”的阿婆主们的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).contentdata = 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)+1video_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).contentdata = 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=imgelif i == 19:row_img=np.hstack((row_img,img))all_img = row_imgelif 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站粉丝达到两位数的知名(才怪)阿婆主

最后用手工耿在B站播放量最多的一个视频作为本文的结尾,这个视频非常好的体现了本文“惊为天人”的主题,也希望大家能亲自去尝试一下,如果用完还能四肢健全地写下使用感受,欢迎与我们分享

热 文 推 荐 

☞面对恶意攻击,主机安全如何构建云端防御屏障?

☞想知道未来对象长啥样?程序媛写的“夫妻相”生成器火了!

☞拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?

☞微信9年:张小龙指明方向,微信AI全面开放NLP能力

☞面对恶意攻击,主机安全如何构建云端防御屏障?

☞你能说出 Kafka 这些原理吗

☞联盟链走向何方

你点的每个“在看”,我都认真当成了喜欢

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



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

相关文章

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取