程序员用 Python 扒出 B 站那些“惊为天人”的UP主!
前言
!
近期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).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站粉丝达到两位数的知名(才怪)阿婆主
最后用手工耿在B站播放量最多的一个视频作为本文的结尾,这个视频非常好的体现了本文“惊为天人”的主题,也希望大家能亲自去尝试一下,如果用完还能四肢健全地写下使用感受,欢迎与我们分享
程序员用 Python 扒出 B 站那些“惊为天人”的UP主!的更多相关文章
- 给Lisp程序员的Python简介
给Lisp程序员的Python简介 作者:Peter Norvig,译者:jineslong<zzljlu@gmail.com> 这是一篇为Lisp程序员写的Python简介(一些Pyth ...
- C++程序员学Python
目录 C++程序员学Python 第二章.变量和数据类型 1.注释语句前用#: 2.常用于大小写函数: 第三章.列表 1.列表简述 2.修改,增加,插入,删除列表元素 第四章操作列表 1.遍历 2.创 ...
- 【Python】Java程序员学习Python(五)— 函数的定义和使用
不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...
- 程序员的智囊库系列之2----网站框架(framework)
程序员的智囊库系列之2--网站框架(framework) 这是程序员的智囊库系列的第二篇文章.上一篇文章讲了服务器与运维相关的工具,这篇文章我们将介绍几个搭建网站的框架: django express ...
- 【Python】Java程序员学习Python(二)— 开发环境搭建
巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...
- 为了运行十年前的代码,程序员们甚至翻出了一台 1977 年的 Apple II
"Hello, World!" 46 年过去,这段被世人熟知的代码仍散发着历久弥新的魅力,和它一起登场的 C 语言,如今也成长为世界几大通行编程语言之一,为互联网世界乃至现实世界都 ...
- 来自Java程序员的Python新手入门小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 程序员,Python 这次彻底上位了!
在 2018 年底,我们迎来了编程语言的最后一波洗礼.近期 TIOBE 公布了 12 月编程语言排行榜,前三名变为: Java.C.Python. 而在 PYPL 榜单上 Python 在今年 5 月 ...
- 一位资深程序员面试Python工程师的岗位心得和历程【新手必须】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员阿牛说一些面试的心得体会: 1.简历制作我做了两份简历,用两个手机 ...
随机推荐
- SpringBoot学习(学习过程记录)
关于微服务和SOA 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 官网教程学习ht ...
- 解决phpinfo 和php -v版本不一致的问题
解决方法:参考博文 http://blog.csdn.net/laomengnevergiveup/article/details/52104862
- Codeforces1243C Tile Painting
原题面:https://codeforces.com/contest/1243/problem/C 题目大意:给定数字n,有n个方块,第i个和第j个之间的距离(abs(i-j))如果是n的因子,那么第 ...
- Idea--使用Idea调试设置
参考 https://blog.csdn.net/yyjava/article/details/81453748 关闭一些Idea默认设置,否则懵逼到爆炸.. 1.关闭集合类视图 2.关闭watch视 ...
- Kafka--windows下简单使用kafka命令
参考 https://www.cnblogs.com/cici20166/p/9426417.html 启动zookeeper 只需要保证有可用的zookeeper,可以使用kafka内置的,也可以自 ...
- 动手实验01-----vCenter 微软AD认证配置与用户授权
环境说明: AD域-> centaline.net 阅读目录: 1. 配置与AD认证源 2.权限角色 1. 配置与AD认证源 登陆vCenter后,在 系统管理 -> 配置 -> ...
- windows下移植别人配置好的python环境
一般来说,我们在windows下配置python环境的时候可能会比较推荐用anaconda,那么有一个比较方便的anaconda环境移植方法,也就是说,如果我已经在windows上安装好了anacon ...
- 虚拟机安装centos6.5出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题
vmware安装linux系统出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题 问题出现原因:我给虚拟机的内存太小了,只给了512M 解决办 ...
- springboot#interceptor
_ 拦截器相对与过滤器Filter 而言,拦截器是spring中的概念.过滤器是servlet中的概念.在spring中肯定是优先使用拦截器Interceptor的. public class My1 ...
- 自己安装windows版本的Flink
参照 https://blog.csdn.net/clj198606061111/article/details/99694033 我自己做一遍 找到对应的网址 https://flink.apach ...