微博数据采集(爬虫)看到赚到

微博爬虫系列1-微博粉丝列表获取分析

大家好,我是W

前言:不知道大家学爬虫有没有想过怎么爬微博,那么这个微博爬虫系列就是一步步解析如何爬取微博的全部信息,并且可以让大家实现全站爬取、指定用户全部微博爬取。本篇内容包括**微博登录、微博多平台分析、微博个人信息抓取、微博粉丝列表分析。**本系列共分为1、2两篇,但是为了起名字更加吸引人一点所以两篇之间没有前后关系的体现。但是均为同一天编写,应该很容易找。

最新消息,微博接口没有修复,本篇文章不仅仅可供简单参考,下述所有api都没有失效!2020年4月22日09:18:26

微博登录

众所周知微博未登录也是可以看到一些信息的,但是也仅限于首页ajax异步加载的信息,在个人主页下也只能看近期发的微博(如图1),在微博话题下看最近几十条(如图2)。能够使用高级搜索,但是相当于查看微博话题只能看最近几十条,所以若要实现特定话题搜索、指定用户爬虫的话还是需要登录微博。明确了微博的拦截范围之后对我们项目有了初步的认识。

那么接下来就需要找到微博登录的api看看能不能实现带参登录。经过半天的寻找硬是没找到带参数的api,应该是微博经过js加密过了。并且在移动端的登录接口处是可以找到上传的参数的(如图3),好像是可以通过传参数实现登录的,但是通过修改URL查看结果发现已经被服务器预先拦截了(如图5)。

没办法,一般首选肯定是通过请求api传参然后获得cookie实现登录。现在只能使用selenium模拟登录了。微博移动端的元素比较少,所以就选择移动端作为模拟登陆的端口了。 URL为 ,在实现微博登录后需要将其cookie保存下来用于第二次登录(当然也有cookie里带时间戳的,就需要另外攻克,先试试看)。这段代码比较简单,我直接贴出来。

因为可能会出发微博的验证码系统,所以还是需要打开浏览器来盯着,当账 池大的时候是相当麻烦的一个过程。所以也算一个遗憾吧。给大家找几个解决验证码的思路,英文数字验证码->打码平台/自己做文字识别,滑动宫格验证码都给碰上了儿,看完此文分分钟拿下!。

微博多平台分析

既然实现了登录了,那么只需要在请求时带上cookie就可以了。所以接下来我们要找找获取用户基本公开信息的方法。微博共有三个站点,分别是3G版微博、移动端微博、PC版微博,我们选择对3G版来获取,因为3G版页面最简陋、而且由于 络原因限制他不可能携带太多js文件,所以对反爬虫力度应该是最小的

说出来你可能不信,所以我们把三个站点的用户基本公开信息页面都找一找,对比一下:

这是PC版微博用户详细信息页:

这是3G版微博:

可以看到这是该用户的微博主页,里面包含的内容有发布的微博数、关注数、粉丝数、还有他发过的一些微博。多翻几页试试看,该用户共发了46页微博,好像没什么问题。多找几个大V试试,找了人民日 的微博,该用户共发布115920条微博,继续翻页发现翻到最末尾11590页也没什么问题。这时我们退出账 试试,发现退出账 后根本无法访问任何用户的信息,OK当然我们是带着cookie去访问的,影响不大。

继续翻粉丝列表,发现粉丝列表只能访问20页。这就有问题了,如果不能够从大V的粉丝列表中获取足够多的粉丝id,我们是无法拼凑够大的关系 的,也无法实现全站爬取。这时候需要从其他方向考虑了。

来到PC版看看,随便访问一个用户的fans列表,在底部发现是翻页页脚,ok,试着访问最末尾,结果直接爆系统限制,上 查了一下说是非好友什么的只能访问几十页(好像大概50),这样是不行的,50页一页20个才一千人。

结尾

OK,这篇微博初步分析就到这里,其实当时找到微博的这个api的时候我是很激动的,因为我知道只要拿到api相当于打开了对方的数据库一样,并且采集的效率会翻几倍的增长。但是由于中间因为个人原因拖了一些时间所以没能把博客出出来,实在是有点遗憾。这篇文章就使用价值来说其实已经因为微博这次更新大打折扣了,不过中间分析的过程还是有点价值的,我也会尽力还原当时的思路,让大家能够了解点什么,而不是吃瓜。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览211379 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月15日
下一篇 2020年3月15日

相关推荐