哔哩哔哩用户数据采集及数据分析

就简单的采集几万个练一下手,代码大家看着改吧

先上代码

import requests
import time
from pymongo import MongoClient
import random
import json
import urllib3
from multiprocessing.dummy import Poolua = ['Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)','Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10','Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13','Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+','Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0','Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124','Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)','UCWEB7.0.2.37/28/999','NOKIA5700/ UCWEB7.0.2.37/28/999','Openwave/ UCWEB7.0.2.37/28/999','Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0','Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Androdi; Linux armv7l; rv:5.0) Gecko/ Firefox/5.0 fennec/5.0','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10','UCWEB7.0.2.37/28/999','NOKIA5700/ UCWEB7.0.2.37/28/999','Openwave/ UCWEB7.0.2.37/28/999','Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999', ]
start = time.clock()
urls = []
with open(r'D:/password.txt', 'r') as f:for i in f.readlines():num = i.strip()url = 'https://api.bilibili.com/x/space/acc/info?mid={}&jsonp=jsonp'.format(num)urls.append(url)
random.shuffle(urls)def get_info(url):remeber = requests.session()get_seesion = remeber.get('https://space.bilibili.com/215079380?spm_id_from=333.788.b_636f6d6d656e74.43')try:HEADERS = {'User-Agent': random.choice(ua)}urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)info = remeber.get(url, headers=HEADERS, verify=False).content.decode()source = json.loads(info)data = source["data"]dic = {'name': data['name'], 'sex': data['sex'], 'birthday': data['birthday']}print(dic)print('此用户信息打印完毕')collenction.insert_one(dic)time.sleep(5)except:print("此链接无信息"+url)time.sleep(2)client = MongoClient()
database = client['bilibili']
collenction = database['spider']
pool = Pool(20)
result = pool.map(get_info, urls)
end = time.clock()
print('完成所用的时间为: {}'.format(end-start))

代码讲解

主要的思路是:
1:先进入到信息所在的页面,在页面中通过network 来查看该页面的requests 形式,已经返回的信息。在这个查看中,意外的返现信息业的requests url 是一个比较有规矩的网址,可以通过拼接完成的。(本来是想用selenium 来操作的,但是效率太低,而且xpath 一直有问题 找不到对应的元素)

2:确定了requests 之后 发现可以通过get 信息得到,那么就更加简单的,直接requests.get 来实现,并且返回的是一个json 内容,因此对返回的内容需要json.loads 编程python 方便处理的字典

3:我这里的password.txt 是通过第三方库生成,7位数数字,用来拼接requests_url , 哔哩哔哩上面应该有6,7,8位的id 都有

start = time.clock()words = '123456789'
r = its.product(words, repeat=7)
dict = open(r'D:/password.txt', 'a')
for i in r:dict.write(''.join(i))dict.write(''.join('\n'))print(i)dict.close()
print('密码已经生成完毕')
end = time.clock()
print('所用时间为:{}'.format(end-start))

这个代码本来是用来暴力破解wifi 用的 现在被我拿来干这个。简单的意思是 its.product (参数1,参数2),参数2 是需要生成的位数,这里是7位数,参数1 是基础对象,这个方法就是针对这个1-9位数,穷尽其所有7位数组合,那就是9的7次方个数字。

4:生成好之后,就简单了,对只写拼接的数字进行遍历,每一个都请求过去,就可以了。需要注意的是,因为访问量大,所以一定要更换UA ,我把更换UA 部分放在了 循环里面,这样每次请求的时候 都可以更换。至于要不要用到requests.session 这个方法, 我个人觉得要用,这样的话 就能保持在同一个会话,但是同一个cookies 和不同的UA 会怎么样,百度没有查到,到至少这次 我没有被这个网站封IP 这样的操作应该是好用的。

5:最后记得导入到数据库就行了, 我用的mongodb ,挺方便的。

6:我用了多进程的方式进行,其实这里进程池设置为4就可以了,我的电脑就是4核的而已, 20没有意义,这个也是后面差了资料,了解了进程的运行原理之后才知道的。所有学代码,计算机的硬件知识,底层运行知识还是多学学的好。

7:最后找到了2。5W 的数据, 处理了一下, 做了饼图

import csv
import matplotlib.pyplot as plt
column_new = []
with open(r'D:\bilibli.csv', 'r', errors='ignore') as f:reader = csv.reader(f)column = [row[2] for row in reader]del column[0]
#b = ['1月1日', '']
#for i in column:#if i not in b:#column_new.append(i)
#month = []
#for i in column_new:#month.append(i.split('月')[0])#label = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
#sizes = [month.count('1'), month.count('2'), month.count('3'), month.count('4'), month.count('5'), month.count('6'), month.count('7'),#month.count('8'), month.count('9'), month.count('10'), month.count('11'), month.count('12')]
#plt.axes(aspect='1')
#plt.pie(sizes, labels=label, shadow=True, autopct='%.0f%%')
#plt.show()
print(column)
b = ['保密', '']
sex_column = []
for i in column:if i not in b:sex_column.append(i)
print(sex_column)
label = ['Boy', 'Girl']
sizes = [sex_column.count('男'), sex_column.count('女')]
colors = ['lightblue', 'lightyellow']
explode = [0.1, 0.0]
plt.axis(aspect='1')
plt.pie(sizes, labels=label, explode=explode, colors=colors, shadow=True, autopct='%1.1f%%')
plt.show()

前面先剔除掉 数据中 一些空,设置为保密的,出厂设置为1月1日的内容,然后再做饼图,很简单。就不讲解了。
最后图为
在这里插入图片描述
这个是采集到数据用户生日月份图,title 都懒的加了,因为图有点丑
在这里插入图片描述
这个是男女比例图,竟然男的多。 当然这个数据量样本太少了。没有参考意义。
有时间的同学,可以把5,6,7,8位的所有用户都采集一下,然后再做数据分析,比较好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67765.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哔哩哔哩会员免费领取

B站早期是一个ACG(动画、漫画、游戏)内容创作与分享的视频网站。 经过十年多的发展,围绕用户、创作者和内容,构建了一个源源不断产生优质内容的生态系统,B站已经涵盖7000多个兴趣圈层的多元文化社区。 会员领取地址&…

仿哔哩哔哩动画Android客户端(哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)

前言 花了一个月的时间,把这个项目怼的差不多了,该仿的b站开源项目采用主流mvpdagger2rxjava2作为整体框架,而网络请求采用okhttp3retrofit2,虽说仿的,但是b站官方客户端有许多炫酷视觉的效果,本人水平有限…

如何在电脑端安装哔哩哔哩?

如何在电脑端安装哔哩哔哩? 目前哔哩哔哩没有电脑版。之前在自己电脑上安装了一个哔哩聚合,一点都不好用,用了一段时间就卸载了。 其实下载哔哩哔哩电脑版客户端非常简单,只需要按照以下步骤就行啦! 1. 安装安卓模拟…

上班带薪打游戏?二次元的福音 在哔哩哔哩做测试员是一种什么体验?

说起B站,小伙伴们第一个想到的是什么?二次元,手办?诚然,不知什么时候开始,B站成为了许多年轻人的聚集地和二次元的福音,从一个小的视频网站,到现在众多年轻人娱乐需求的刚需&#xf…

哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg

说明 此软件是为了帮助网友合并哔哩哔哩缓存视频,Android上将bilibili缓存视频合并导出为mp4,你可以将它理解为一个专用的格式工厂,并不涉及破解相关内容,仅仅用于学习技术交流,严禁用于商业用途,如有侵权…

制作哔哩哔哩弹幕词云

先展示一下实物图吧 不知道有没有人能猜出来这是哪个视频的弹幕 直接上代码 先是爬取视频弹幕 import re import requests def main():print("输入想爬取的b站视频网址:")url input()res requests.get(url)cid re.findall(r"cid":(.*?),, res.text)…

bilibili获取cookie

bilibili获取cookie 先去登录自己的哔哩哔哩 (゜-゜)つロ 干杯~-bilibili账号 然后进入个人中心 然后按F12打开https://api.bilibili.com/x/web-interface/nav 没找到可以刷新一下页面 获取到cookie填写到环境变量即可 export Ray_BiliBiliCookies__0“”; 本文转载自哔哩…

【爬虫工具】哔哩哔哩插件姬(bilibili-plugin)

完整原文(含源码):Github (转载请注明出处,仅供分享学习,严禁用于商业用途) 声明 写这个插件纯粹是出于学习目的,此博文主要作用是功能展示之后会围绕这个插件,写一个系…

Python爬虫实战之哔哩哔哩二维码登录申请

前言 哈喽,好久不见了吧,各位新年好!博主春节也是比较忙的,没时间去写文章和"coding"。最近我们学校也是初九就开学了,所以更加没时间创作了🤣 言归正传,本次写这篇文章算是想要对我…

技巧丨哔哩哔哩转正答题技巧

技巧丨哔哩哔哩转正答题技巧 技巧丨哔哩哔哩转正答题技巧 准备工具答题 卷一(第一部分)卷一(第二部分)卷二:自选题 前言:前几天在B站看视频,想吐槽一下内容,结果发现需要转正后才能…

哔哩哔哩第三方神器软件,早该用上了

今天分享几个b站第三方神器app,下载地址在公众号苏生不惑后台回复 b站。 BBLL 哔哩哔哩2023最新第三方TV和pad端开源软件https://github.com/xiaye13579/BBLL ,支持8K、弹幕、直播,大会员通用,首页只有推荐、热门、番剧、影视等模…

Miko二次元动漫视频网站源码 视频播放带仿哔哩哔哩视频字幕弹幕

非常大气漂亮的Miko动漫视频网站整站源码,二次元动漫网源码。Dz后台管理方便,整站数据都设置好了,传上即可制作一个完整的动漫网。 安装教程: 1.源码上传到空间 2.自己修改里面数据库信息(错一个网站就打不开&#xff…

哔哩哔哩弹幕api及一些解释

有两个弹幕api接口,分别是移动端与电脑端 https://comment.bilibili.com/ cid .xml https://api.bilibili.com/x/v1/dm/list.so?oid cid以电脑端为例子,使用谷歌浏览器打开某个哔哩哔哩的视频: 右键–检查–network–刷新–一个个找吧&…

哔哩哔哩自动生成视频上传,B站发布软件使用教程

哔哩哔哩自动生成视频上传,B站发布软件使用教程,全自动引流发帖软件介绍#引流发帖软件#全自动引流发帖#引流推广#拓客引流#爆粉软件 大家好,我是百收编辑狂潮老师,下面给大家讲一下 b 站上传软件它的一个使用方法。第一次使用的时…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

如何在微信公众号的文章推送中展示bilibili的视频

0x00 需求背景: 我们学院举办了一个短视频设计大赛,需要在官方公众号里进行线上投票,选出大家最喜欢的视频。 然而微信公众号的文章推送中,限制了每篇文章只能上传三部视频,而我们需要把三十部作品都放到一篇文章中…

从B站 (哔哩哔哩) 泄露的源码里发现了B站视频推荐的秘密

这两天闲来无事,回顾了一下年前B站沸沸扬扬的代码泄露事件,大致翻阅了一些泄露的代码发现了一些有意思的事情,其中就包括 B站视频推荐 加权部分算法 的相关代码。 不过后期 B站官方辟谣说是老版本代码,并且已经进行相应的防御措施…

哔哩哔哩用户需求分析报告

先说总结与建议 根据需求优先级列表排序和用户需求程度排序,基于对目标群体的认知和日常使用,总结出以下几点优化建议: 内容方面 加强内容审查,同时加快内容审核。针对UP主上传的视频内容,可提供用户评分功能&#…

国足晋级12强 | 爬取《NBA30支球队》“现役球员信息”,再来看看篮球吧!

我爸对篮球真可是相当钟爱,基本是每个赛季必追。我就不同了,自从高中毕业后,就再也没怎么看篮球了。于是,我就有感而发,是否可以爬取现役球员的一些信息,看看我还有几个认识的。 1. 页面分析 我爬取的页…

“元宇宙”是什么?涂子沛:人可在数据空间“复活”

点击上方“程序猿技术大咖”,关注并选择“设为星标” 回复“加群”获取入群讨论资格! 来源:https://view.inews.qq.com/a/20211204A047MY00 “最近热火的‘元宇宙’,其实是在原有的空间中增加了数据空间,在这个数据空间…