用Python实现监控小姐姐/小哥哥微博,了解一下?
开发工具
Python版本:3.6.4
相关模块:
DecryptLogin模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
一. 要求
实时监控某个微博用户有没有发新的微博。
二. 微博模拟登陆
调用我之前开源的DecryptLogin库就可以很方便地实现微博的模拟登陆了。
模块地址(硬核广告,欢迎大家stars):
https://github.com/CharlesPikachu/DecryptLogin
三. 微博监控
1. 确定待监控用户
(1)指定用户id进行微博监控
这个很简单,在浏览器里登陆微博移动端,然后点进想要监控的用户的微博主页,就可以找到该用户的用户id了,例如下图所示:
(2)监控关注列表中的某用户
简单抓包可以发现:
只要不断请求(page每次加1)上图中红框框出的链接直到返回的数据为空就可以获取登录用户的关注列表中的所有用户信息了,具体代码如下:
然后用户自主选择想要监控的微博用户:
用户选择完毕后,利用正则表达式获取该微博用户的用户id:
2. 实现微博监控
步骤一:获取被监控微博用户发布的所有微博
经抓包分析与实际测试,获取被监控微博用户发布的所有微博流程如下:
① 获取第一个containerid
登录状态的session请求用户主页后通过正则表达式从session的cookies中提取。
② 获取第二个containerid
利用第一个containerid、user_id请求:
https://m.weibo.cn/api/container/getIndex?uid={}&luicode=10000011&lfid=231093_-_selffollowed&type=uid&value={}&containerid={}
即可获取第二个containerid。
③ 获取被监控微博用户发布的所有微博数据
利用第二个containerid、user_id请求:
https://m.weibo.cn/api/container/getIndex?uid={}&luicode=10000011&lfid=231093_-_selffollowed&type=uid&value={}&containerid={}
即可获取被监控微博用户发布的所有微博数据。
步骤二:实时监控
不断重复步骤一,获取被监控微博用户发布的所有微博,将获取的数据与上一次获取的被监控微博用户发布的所有微博数据进行对比,若有新的数据,则代表被监控微博用户发布了新的微博。
具体代码实现如下:
All done~完整源代码详见相关文件。
效果展示
运行方式:
效果展示:
因为需要输入账号密码等敏感信息,所以就不发演示视频了(打码麻烦)。就截个图吧: