首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

前头分析了微博数据大概从三个地方来获取,分别是微博官网、m站以及wap站

今天就讲解前两个是如何获取数据的,至于wap站的数据采集相对更为详细,放在之后的篇幅来说

首先 微博官网

https://weibo.com/

要想大量的获取微博的用户信息一般可以通过两个方式去采集

一、通过选取几个微博大V,获取他们的粉丝列表中的粉丝,然后遍历粉丝们的粉丝列表,这样不断地循环下去,虽说可能会死循环,但是能极大程度得产生更多的微博用户

二、通过微博的搜索接口,利用大量的关键词,通过搜索这些关键词,找到对应关键词搜索出来的大量用户从而获取

第一种方法小编还在整理wap版的代码,这里就讲解通过关键词采集的方法

可以看到这是通过搜索关键词“a”得到的微博用户,而且最多只展示50

且一下面的小姐姐为例,可以看到列表中的信息就包含有:

昵称、微博认证信息、性别、居住地、简介、关注、粉丝、微博、标签、教育信息、职业信息等

有的博主展示的信息还有更多,而这些信息也正是我们想要获取的

而且这部分信息在网页源代码中也可以看见

所以基本的步骤如下:

1、通过关键词搜索找到需要爬取的微博用户信息列表

(要获取几十万或者几千万的关键词的话,可以自己在网上找资源,比如常用汉字两两组合、GitHub上也有相应的词库等)

2、提取微博用户信息

(可以通过正则提取,但是小编觉得这种多标签的情况通过xpath提取会更方便些)

以上是在未登录,没有添加cookie的情况下可以获得的微博用户的基本信息,在这种情况下只能采到这种基本的用户信息,不能获取用户的详细资料以及用户发的微博,而访问过快会像这样封你一段时间......

而在登陆的情况下就可以采集到更多的数据,但是访问的时候也要带上cookie,同时现在访问过快好像不会出现验证码,而是直接封你的IP...这一点跟之前做测试的时候有了比较大的的改变,还需反复验证,之后会给大家一个结果

但是这里还是介绍一下小编之前是如何与这个反爬验证码作斗争的

一开始尝试过用selenium+phantomJS暴力破解,原理是通过自动化访问出现验证码的链接,然后自动化截图,交给打码平台获取返回之后,给对应的标签自动化输入识别的验证码,但是遇到的问题是提交之后老是提交错误

检查了好几遍才知道原因在于一旦验证码生成之后,再次访问验证码的这个链接,验证码就会再次刷新,而我需要截图就必须二次访问这个链接,所以识别的验证码已经不是需要验证的验证码了...晕了吧

但是正是因为这个验证码的刷新机制,我们可以直接向这个验证码图片的源地址发送请求后直接保存验证码图片,源地址当时是类似这种

这样一来没有了二次访问的问题,因为在频繁访问过程中就算产生了需要通过验证码的界面,要输入这个界面显示的验证码,但是由于他的验证码刷新机制,我只要直接请求生成验证码图片的源地址,并保存下来,那么这实际上验证码提交接口需要提交的验证码也会随着我的这次请求而改变为我保存下来的验证码图片中的验证码!

这是当时验证码提交接口以及所需的参数,提交的同时还需要带上cookie,以及请求头

至于打码这回事,推荐可以采用云打码这个平台(不是广告)

在打码过程中,作为开发者我当时提取分成也提取了50多块钱...同时验证码的识别度也比较高(注意调用云打码平台的借口时,Python版中需要添加的 username 指的是普通账号的账户名,而不是开发者账号的

同时推荐一个开源的爬取微博PC站的项目,有兴趣的可以学习学习

https://github.com/SpiderClub/weibospider

- -

其次 微博m站

https://m.weibo.cn/

这里同样通过关键词来搜索的话,得到的是这样的用户列表,下拉加载,大概也有50页

经过测试,m站返回的数据都是ajax动态加载的,这里小编找了几个

这是搜索得到的用户列表所展示的数据

这是点进去找到的用户的详细资料的数据

至于用户的所在地、公司信息则又是通过另一个接口加载的,虽然需要请求的接口较多,但好在提取这种json数据就显得方便多了

这里需要注意m站微博认证类型是按数字区别的,具体如下

m站虽不会封你的IP,但是访问过快后也会出现“访问过于频繁,请稍后访问” 类似的情况来限制你的爬虫,所以只能控制访问频率在一个不触发这种请况下,但是速度就太慢了

今天的微博分析就到这里,还有很多地方没有顾及到,就需要大家自己去体会啦

对以上内容有疑问的欢迎联系小编~

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券