抓取B站所有用户信息(11/29更新数据)

有时候没有实际需求,那学习就只能从爱好入手了。

目前我所想到的一些感兴趣的任务有:

  1. B站所有用户
  2. B站视频下载
  3. B站弹幕和评论分析
  4. 虎牙和斗鱼直播视频和弹幕实时获取
  5. 网易云评论获取和分析
  6. 招聘网站全站爬虫和分析
  7. CSDN关注所有与Python有关的博主

第三个就有点意思了,弹幕和评论是可以知道是谁发的,那么当你有了B站所有弹幕和评论的时候,你就可以从一个人发的弹幕和评论分析这个人的性格特点,不过想要所有数据,这几乎是不可能的,一天几十块的优质代理我可买不起。

第四个的话主要是没时间去看,只能下下来空闲的时候看,弹幕的获取主要是为了分析主播目前的状态,比如马老师变捞(老)了)、骚男是不是又和小姐姐聊骚了、神超的不当人教学等。
上面这些内容应该都会在近期发布出来,目前只踩点了一部分,而且也没有实现。

今天我们来抓取B站所有用户信息,包括( ‘mid’: 用户ID, ‘name’: 用户昵称, ‘sex’:性别, ‘sign’: 简介, ‘level’: 等级, ‘birthday’: 生日, ‘coins’:硬币数,‘following’:关注数, ‘follower’: 粉丝数,“archive”:视频总播放量,“article”:这个好像是文章阅读量)。

其实想获取单个用户的这些信息很简单,只需要对网站抓一下包就能知道数据来源了(谷歌浏览器按F12,然后一条一条请求看返回的数据,或者先看请求的链接筛选)。分析了过B站之后(不只是B站用户),发现B站对于爬虫是比较友好的,并没有什么加密机制,大部分数据都是以api接口返回json格式的数据。甚至反爬也仅仅是验证UA头和IP频率限制。所以要想得到大量数据,只需要代理好就行了。

不过,当爬虫的数据量到达一定量级的时候,效率就显得极为重要了,粗略估计B站用户有4亿多,其中两亿多是僵尸用户,没有任何有价值的信息,但爬取的时候并不能直接区分。也就是说想要获取B站所有的用户,需要发出3*4亿个http请求(为什么是3呢,因为抓取的信息分布在3个api里)。这种量级的数据用requests是难以达到的。使用scrapy有点大材小用了,于是我选择了asyncio+aiohttp,这是一个神器,效率是真的高,但出错也多(多看官方文档和百度就行)。
在这里插入图片描述

代码:https://github.com/kanadeblisst/aioBUser

如果不是商用,优质代理的价格实在是有点高。作为学生党只能买一些测试级代理,这样一天也就拿不到多少数据了。另外,关于代理的利用率,我想到的是先创建两个Redis数据库集合,一个放所有提取的代理,一个放有效的代理,每次检查从接口返回的代理是否在数据库中,不在则验证其有效性,然后将有用的存入数据库。这样爬虫程序只需要从有效代理池中随机取出代理。如果爬虫出现异常或者非200状态码,就将代理从数据库中移除。不过就算这样,爬虫的效率还是太低了,主要是因为代理的可用率太低(云代理太坑了,建议后来者不要踩坑),有效的代理每次都只有一百多个,这样运行了五天才得到400多万的数据,照这个速度也就四百多天就完成了。

目前数据比较分散,要一段时间后才能公布数据(也就400天吧) 。如果想要目前的数据,请留言邮箱或者发邮件到kanade@blisst.cn

11/29更新

因为没有优质代理,我很早就放弃抓全站数据了。而已抓取的数据中,ID很分散(协程不会按顺序执行),没有什么价值,我已经删除了。现在看有几个人想要数据,我重新抓取了一些量,b站反爬更新了,对同时访问次数有限制,所以不能开多线程或者协程了,使用单线程每天的抓取量也就十一二万,所以只抓前一百万的数据供大家分析(后续如果有时间会扩展到前一千万数据)。

数据下载链接:https://www.lanzous.com/i7q3e8d (包含json和csv格式)
字段含义如下(CSV格式的文件忘了加第一行的字段了,自己加吧,顺序和下面的一样)

_id: 用户ID,
name: 用户名,
sex: 性别,
sign: 个性签名,
rank: 不清楚,
level: 等级,
birthday: 生日,
vtype: 会员类型(0非会员, 1会员,2年度大会员),
vcount: 发布视频数量,
artcount: 发布文章数量,
pcount: 发布图片数量,
acount: 发布音频数量,
archive: 视频总播放量,
article: 文章总阅读量,
likes: 总点赞数,
following: 关注人数,
follower: 粉丝数

最后,我正在学习一些机器学习的算法,对于一些我需要记录的内容我都会分享到博客和微信公众号,欢迎关注。平时的话一般分享一些爬虫或者Python的内容。

在这里插入图片描述

  • 5
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值