前一天我们分析的是如何通过微博官网、微博m站获取我们想要的数据,以及这两个采集点各有什么优劣势、特点等
今天呢就开始详细的来说说如何从微博wap站获取数据
ps1:经过几次测试发现微博官网的确取消了验证码这一机制,对于通过关键词搜索的爬取方式来说,高频率的访问仍是可以获取搜索结果界面用户列表的数据,取而代之的则是更进一步想要点击用户、浏览用户信息时,会返回414页面,暂时阻碍爬虫的数据爬取
ps2:小编重新考虑了一下,通过遍历粉丝获取更多的微博用户信息存在几个问题;原因是对微博官网来说,假设有一个微博大V,有着几百万的粉丝,但是微博官网只允许查看前五页,共100个的粉丝信息,而这些粉丝不排除极大多数都是只有一个粉丝的僵尸号等,所以最后遍历的结果可能并不理想
当然对以上观点有疑问的话可以联系小编,我们可以一起探讨
微博wap站
https://weibo.cn
这是通过搜索得到的界面
最多有50页
来看看网页源代码中是否有数据
上图就是源代码中阿信的列表信息,其中包含了名称、微博认证类型(就是在V认证图片链接中包含的四位数)、粉丝数、居住地、以及标识用户的UID
这个UID很关键,可以用来作为访问用户主页的拼接地址的一部分,就像这样,这就是阿信的微博主页
而用户主页中则包含了更多的数据,如认证信息、简介、微博数、粉丝数、关注数、所有的微博信息等,同样的我们可以在网页源代码中找到
但是这里的简介只看到了一部分,完整的简介则需要在 【资料】中获取,也就是这个链接
所以对于要获取的数据,来理一下我们的思路:
1、通过关键词搜索得到上图所示的用户列表页,可以翻页获得更多用户信息
2、获取列表页中用户信息,得到UID,以便后续的请求,点击进入用户主页后获得更为详细的数据(也就是在域名后加上用户的uid),在【资料】中也有详细数据
3、数据的提取可用正则、xpath
这几步相信对大家来说已经是熟能生巧了,接下来要攻克的就是如何快速大量的爬取这些数据!
首先我们要明确,只有登陆了的情况下才能访问这个搜索接口,也就是需要带上登陆之后才有的 cookie
未登录状况下
但是就算你登录了,只有你一个账号采集的话很容易被封,所以我们的目的就是构建一个账号池(也可以说是cookie池),通过模拟登陆获取登陆后的cookie,存入数据库中,之后每次请求随机带上一条 cookie即可最大程度上避免被封
账号则需要购买啦,这也是不可避免的一点,链接联系小编获取哦;账号有了,那么如何模拟登陆获取 cookie 呢,来看看用正常的账号登录没有什么问题,但是这种小号来登陆的时候会出现下面的这种指滑验证码
登录界面
验证码
那么问题来了,构建一个200多个账号的账号池,难道要一个一个去验证吗,那不累死...
事实上也是早就有大神写好了通过自动化模拟登陆获取cookie 的脚本啦,小编在之上改写了一点,添加了调用数据库的方法;代码较多暂放一部分,有需要的可以联系小编获取哦~
通过这个脚本就能实现构建一个账号池,之后通过代码随机带上一个cookie请求就能调用搜索接口来搜索了
但是这也仅仅是同步情况下的请求,远没有达到我们预期的速度,如何提高速度达到每天百万数据的情况呢,我们下一篇再见~
领取专属 10元无门槛券
私享最新 技术干货