抓取B站所有用户信息

    xiaoxiao2022-06-26  217

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

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

    B站所有用户B站视频下载B站弹幕和评论分析虎牙和斗鱼直播视频和弹幕实时获取网易云评论获取和分析招聘网站全站爬虫和分析关注所有与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。有性价比高的代理商希望能推荐一下,十分感谢。

    原文博客:https://blog.csdn.net/Qwertyuiop2016/ 现在这个是小号,给爬虫用的

    欢迎关注我的微信公众号,分享我的学习经验和一些觉得不错的资源。如果有问题的话,也可以在微信公众号联系我。


    最新回复(0)