首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | 利用Python实现微博监控小姐姐动态

Python | 利用Python实现微博监控小姐姐动态

作者头像
用户1634449
发布2018-10-18 17:02:15
1.2K0
发布2018-10-18 17:02:15
举报
文章被收录于专栏:Python专栏Python专栏

作者:奶权 来源:http://www.jianshu.com/p/9e7ba0a0a610

0x00 前言:

前几个星期在写一个微博监控系统 可谓是一波三折啊 获取到微博后因为一些字符编码问题 导致心态爆炸开发中断 但是就在昨天发现了另外一个微博的接口

一个手机微博的接口https://m.weibo.cn/ 经过一番测试后认为这个接口满足我的要求 就继续完成未完成的使命吧

0x01 分析:

这个接口直接访问的话会有一个302跳转到一个登陆界面

也就是说这里需要先模拟登陆一下才可以访问到微博 抓个包分析了一下

发现只要用户名和密码正确既返回200且json部分的retcode会返回20000000

少了验证码这一大坑 那模拟登陆就相当简单啦

登陆完后访问用户主页 例如:https://m.weibo.cn/u/3023940914 可以在审查元素的Network模块看到 这里用了两个xhr来加载用户信息及微博信息

分别是

https://m.weibo.cn/api/container/getIndex?type=uid&value=3023940914&containerid=1005053023940914 https://m.weibo.cn/api/container/getIndex?type=uid&value=3023940914&containerid=1076033023940914 经过测试这个接口直接加上typevalue参数访问 就相当于第一个接口 不必加上containerid参数 而第二个接口的containerid参数则是通过第一个接口获取的

获取到第二个containerid参数访问第二个接口就可以获取到这个uid发布的微博了

返回的是json格式的数据 用户的微博信息都在cards列表里每条数据的mblog数组里面 包括微博正文、图片、来源与时间

其中card_type标识的是微博类型 例如:文字微博 图片微博 视频微博 转发等 经过测试文字微博和图片微博的card_type标识都一样为9

这里初步只开发监控文字和图片微博的功能<del>其实就是懒</del>

0x02 开发

首先需要模拟登陆 后续的操作都需要基于登陆的格调来进行 也是需要在同个会话进行 可以使用requests.session() 方法来完成 代码片段:

登陆完成后就可以拼接用户id访问前面说的第一个接口了 访问完后再拼接containerid参数获取微博信息的json数据 代码片段:

这里把所有获取到的微博的id存起来 后面继续访问是发现有新的微博id不在这个列表里就证明是新发布的微博 代码片段:

将这些方法封装成了一个类 完整代码如下

写了个一发现有新微博就发邮件提醒的功能 完整代码见Github地址 https://github.com/naiquann/WBMonitor

0x03 测试

运行代码

填写完相关的登陆信息及要监控的用户的id后

这里写了一个心跳包 每三秒访问一次看看有没有新微博发布

测试的时候这样比较方便 要是拿来用的话可以酌情增加间隔时间

当有微博发布的时候

大功告成啦 监控小姐姐的微博去喽~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档