基于Webmagic的爬取B站用户数据的爬虫

本文介绍了如何使用Webmagic爬取B站活跃用户数据,包括爬虫设计思路、反爬机制处理、数据持久化以及部分代码示例。通过控制请求频率和利用MySQL存储数据,实现了对B站用户关注和被关注对象的抓取。
摘要由CSDN通过智能技术生成

基于Webmagic的爬取B站用户数据的爬虫


github: https://github.com/Al-assad/Spider-bilibiliUser-active

数据示例样本:http://pan.baidu.com/s/1dFchDZj  验证码:b2fi


学校数据挖掘作业要弄一个聚类分析,我想不如到我大B站搞搞事情吧,于是开始研究B站用户数据的获取接口;

B站现在大概有1亿左右的有效用户,由于时间的限制,爬取全部的用户对于作业的期限是肯定来不及,于是我选择爬取活跃用户(高关注数和高被关注数用户),B站的用户主页如下:




爬虫设计思路

打开F12调试器后,发现该页面是一个前端渲染页面,通过css或xpath无法获取到动态渲染的节点的数据,于是选择通过JsonPath获取json文件的数据,使用的时FrieFox自带的调试工具该页面的是主要用户数据接口为: http://space.bilibili.com/ajax/member/GetInfo,发送方式为POST,参数为  mid(用户ID);

这里推荐一个很不错的Web调试工具:Fiddler 4



结果我写得的前嗅程序发现,该接口的反爬虫机制为对IP的接入频率,上限大概为 150~200 次/分钟,解决方式大概有2种:

1.  减低爬虫爬取频率;

2.  使用IP代理池,更具请求频率调整更换IP频率;

出于公共道德考虑,我选择了第一种方式(其实是因为我之前爬取的公共IP池里面大多数IP已经失效,懒得再爬取,况且这也只是一个作业而已就随便应付了);


接下来是解决请求跳转,通过调试工具的抓包,发现用户的关注对象、被关注对象的数据接口为:http://space.bilibili.com/ajax/friend/GetAttentionList?mid=633003&page=1, http://space.bilibili.com/ajax/friend/GetFansList?mid=633003&page=1,请求方式为GET,参数mid为用户ID,page为页数;

在这两个数据接口B站的反爬机制为限制页面访问,客户端最多只能访问前5个page,也就是说page取值为1~5,每page返回的json有20个用户数据对象,也就是一个用户最多只能跳转200个用户(估计B站被爬怕了),这我没想到其他的解决方法,只能暂时这样;


解决了爬取逻辑后,接下来解决数据持久化的问题,由于之后要使用rapidminer进行数据挖掘,于是使用MySQL储存数据,也方便之后对数据进行筛选,ADO层引擎使用JDBC;


爬虫引擎选用黄亿华前辈写的 webmagic  ,Webmagic是一个小巧强大、支持多线程,可定制的垂直爬虫引擎,这里给大家安利一个;


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值