Python爬虫日记第十二天之微博-深入分析(二)

前一天我们分析的是如何通过微博官网微博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请求就能调用搜索接口来搜索了

但是这也仅仅是同步情况下的请求,远没有达到我们预期的速度,如何提高速度达到每天百万数据的情况呢,我们下一篇再见~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181207G1PTPN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券