教你用Python爬取哔哩哔哩全站用户信息

运行

下载

git clone https://github.com/cexll/bili_user_Spider.git

复制代码

运行环境

Windows/Ubuntu

Python 3.6

VSCode

依赖

requests

pymongo

mongodb

使用本脚本请先安装好MongoDB,并且安装好库

pip install -r requirements.txt

复制代码

运行

运行前请进入脚本把cookie和mid改成自己的方便第一时间给数据库增加相应的数据

python3 spider.py

复制代码

思路

这是用思维导图画的一个脚本的大致运行情况

程序的大致思路是这样,通过mid进入用户主目录,然后获取用户个人信息并保存到数据库,然后获取用户的粉丝数量以及关注数量方便之后计算页数,下一步获取所有的关注用户mid以及粉丝用户mid保存到数据库,然后依次提取数据库mid进入用户主目录循环至结束

运行过程

数据来源

数据通过bilibili官方api获取除了获取个人信息必须要进入用户目录才能成功获取其他都可直接通过API获取到数据

分析代码

这里就上最主要的代码

运行函数,首选进入用户主页然后获取个人信息到数据库

然后获取粉丝数量以及关注数量

通过关注数量 / 50 得到页数, 这里做了如果结果小于或等于1那么就直接当1,不然range(1, 1)是无法运行的

def run(mid):

"""

运行函数

"""

# 进入用户主页

get_space(mid)

# 获取关注数量和粉丝数量

f, g = get_myinfo(mid)

# 获取关注用户信息

f_g_ps = 50

f_g_pn = int(g / f_g_ps)+1

if f_g_pn <= 1:

get_followers(mid, 1, f_g_ps)

else:

for g_pn in range(1, f_g_pn):

get_followings(mid, g_pn, f_g_ps)

# 获取粉丝用户信息

f_r_ps = 50

f_r_pn = int(f / f_r_ps)+1

print(f_r_pn)

if f_r_pn <= 1:

get_followers(mid, 1, f_r_ps)

else:

for r_pn in range(1, f_r_pn):

get_followers(mid, r_pn, f_r_ps)

# 循环

rep_run()

复制代码

核心代码

这里MIN必须要先初始值,就设置了一个全局变量,进入rep_run,MIN变量加一,连接list数据库,查询数据库所有信息保存到result,max是从数据库提取出来的信息最大count,接下来判断MIN是否大于max,如果大于则说明数据库数据已经运行完了,直接结束脚本,如果不大于则继续循环

def rep_run():

"""

当上一个mid所有事情完成后进入此函数进行循环爬取下一个mid

"""

global MIN

# 每次运行此函数使MIN加一,不能大于max(数据库count)

MIN += 1

collection = db.list

# 查询数据库所有数据保存到result

if collection.find({'id': MIN}):

ran = collection.find({'id': MIN})

# 查询数据库有多少条

count = collection.find({}).count()

for x in ran:

mid = x.get('mid')

if MIN > count:

print('程序即将停止运行,所有信息爬取完成')

time.sleep(10)

exit()

else:

run(mid)

else:

print('数据库没有该数据 id: {}'.format(MIN))

复制代码

分析

2018-9-12 现已有10W数据进行简单数据分析各位看官看看就好

性别分布情况

​ 可以看到,还是有非常多的人不愿意透露性别的(.....)

用户增长情况

这1970年都有大哥注册了,真是元老啊.....但是很少,大部分元老包括b站官方站长等也是2009年

由于一些小问题小坑,已经将数据保存部分进行重写,这次使用了MySQL,有兴趣的可以去Github看看

python爬取b站用户_用Python爬取bilibili全站用户信息相关推荐

  1. python爬取b站评论_用python 抓取B站视频评论,制作词云

    python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下 ...

  2. python爬取b站数据_使用Python爬取B站全站视频信息

    B站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆.不过纸上得来终觉浅,绝知此事要躬行,我码故我在.最终爬取到数据总量为 760万条. 准备工作 首先打开 B 站,随便在首页找一个视频点击进去.常 ...

  3. python爬取b站数据_如果利用Python爬取B站上千万数据?B站直播都是大屌萌妹吗?...

    粉丝独白 说起热门的B站相信很多喜欢玩动漫的,看最有创意的Up主的同学一定非常熟悉.我突发奇想学Python这么久了,为啥不用Python爬取B站中我关注的人,已经关注的人他们关注的人,看看全站里面热 ...

  4. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  5. python b站 礼物_用Python爬取并分析了B站最热排行榜,我发现了这些秘密

    现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉丝的u ...

  6. python爬取网页实时数据_使用 Python 爬取网页数据

    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...

  7. 用python爬取qq空间内容_用python爬取QQ空间

    原博文 2016-11-18 17:19 − 好久没写博文了,最近捣鼓了一下python,好像有点上瘾了,感觉python比js厉害好多,但是接触不久,只看了<[大家网]Python基础教程(第 ...

  8. 用Python爬取bilibili全站用户信息

    教你用Python爬取哔哩哔哩全站用户信息 运行 下载 git clone https://github.com/cexll/bili_user_Spider.git 复制代码 运行环境 Window ...

  9. python爬取数据案例分析_基于Python及webdriver的网页抓取案例

    上次有朋友问怎么抓取交易所网站的数据,特别是历史数据,这里特别推荐使用selenium这一自动化测试框架. 原本selenium是用来完成大量基于浏览器的自动化测试的,但由于可以方便地执行JS代码,摸 ...

最新文章

  1. GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案
  2. 采集Nginx日志的几种方式
  3. Python数据结构与算法(第六天)
  4. mongodb一致性协议_mongodb副本集用一致性快照方法添加从节点步骤
  5. 简单方法解决bootstrap3 modal异步加载只一次的问题
  6. 基于matlab的自适应滤波器,基于MATLAB的自适应滤波器的设计与实现.doc
  7. 软件测试中期答辩,毕业中期答辩模板ppt课件
  8. android 打apk文件怎么打开方式,apk文件怎么打开
  9. python绝对值_python求绝对值的三种方法小结
  10. 常见负载均衡服务器介绍
  11. 实验十八 CISCO设备IOS的备份与升级
  12. 台式电脑如何修复计算机,大神告诉你电脑不断重启如何修复
  13. AI challenger 2018图片分类比赛—农作物病害检测
  14. OSF Jonathan Bryce:Open Infrastructure开启开放协作新时代
  15. Python——组合数据类型的应用_1.英文句子中的词频统计
  16. RHEL iSCSI
  17. Mybatis 直接执行SQL
  18. 计算机再带word打不开,(电脑没有word 和excel)为什么我的电脑突然打不开EXCLE和WORD?...
  19. Viewpager+Fragment+webview中的输入框不弹出软键盘的坑
  20. 如何分析常见的语音芯片故障?

热门文章

  1. 10种增强脑力的办法
  2. 新事务不能登记到指定的事务处理器中异常的处理----MSDTC的正确配置
  3. [C#]获得线程池中活动的线程数
  4. Druid如何自动根据URL自动识别DriverClass的
  5. oracle易忘函数用法(4)
  6. python for 循环每次取n个数据(亲测)
  7. mysql deadlock found when trying to get lock暴力解决
  8. Linux下的crontab定时执行任务命令详解
  9. Go获取年月第一天与最后一天 获取时间戳
  10. Git如何修改文件夹看不清的蓝色显示