Python微博抽奖
白露未晞me 人气:0导语
带大家写个微博自动抽奖小程序吧,motivation和之前的B站自动抽奖小程序一样:
不想内卷了,整个B站全自动抽奖的小程序吧,万一不小心暴富了呢~
废话不多说,让我们愉快地开始吧~
开发工具
Python版本:3.7.8
相关模块:
DecryptLogin模块;
DecryptLoginExamples模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
先睹为快
首先,pip安装一下DecryptLoginExamples模块:
pip install DecryptLoginExamples
然后简单写几行代码调用就ok啦:
from DecryptLoginExamples import client config = { 'username': 用户名, 'password': 密码, 'time_interval': 查询微博动态的间隔时间, } crawler_executor = client.Client() crawler_executor.executor('weibolottery', config=config)
效果如下:
原理简介
整个实现流程和之前的这篇文章差不多:
不想内卷了,整个B站全自动抽奖的小程序吧,万一不小心暴富了呢~
具体而言,就是先获取自己微博的关注列表:
'''获得关注的用户列表''' def getfollows(self, session): page, targetid_list = 0, [] while True: page += 1 response = session.get('https://m.weibo.cn/api/container/getIndex?containerid=231093_-_selffollowed&page={}'.format(page), headers=self.headers) profile_urls = re.findall(r'"profile_url":"(.*?)"', response.text) if len(profile_urls) == 0: break for profile_url in profile_urls: targetid_list.append(re.findall(r'uid=(.*?)&', profile_url)[0]) return targetid_list
然后定时检测自己关注的用户有没有发布新的抽奖信息就ok了:
# 每隔一段时间遍历一遍目标用户, 把有抽奖信息的微博都转发一遍 self.logging('初始化完成, 开始自动检测抽奖相关的微博') while True: for targetid in targetid_list: print(f'正在检测用户{targetid}是否发布了新的抽奖微博') weibos = self.getweibos(session, targetid) for card in weibos: if card['mblog']['id'] in repost_weibos_dict[targetid]: continue else: repost_weibos_dict[targetid].append(card['mblog']['id']) if '抽奖' in card['mblog']['text']: self.logging(f'检测到一条疑似含有抽奖信息的微博: {card}') # 自动点赞 card_id = card['mblog']['id'] response = session.get('https://m.weibo.cn/api/config') st = response.json()['data']['st'] flag, response_json = self.starweibo(session, st, card_id, targetid) if flag: self.logging(f'自动点赞ID为{card_id}的微博成功') else: self.logging(f'自动点赞ID为{card_id}的微博失败, 返回的内容为 >>>\n{response_json}') # 自动转发+评论 flag, response_json = self.repost(session, st, card_id) if flag: self.logging(f'自动转发+评论ID为{card_id}的微博成功') else: self.logging(f'自动转发+评论ID为{card_id}的微博失败, 返回的内容为 >>>\n{response_json}') print(f'检测用户{targetid}是否发布了新的抽奖微博完成') time.sleep(self.time_interval)
其中,判断这条微博是否属于抽奖微博的方式是:
if '抽奖' in card['mblog']['text']:
即微博正文中存在抽奖这两个字的时候,我们就对该微博进行点赞,自动转发和评论操作,所以可能存在误转的情况。不过这玩意应该是属于宁滥勿缺吧。
ok,大功告成啦
加载全部内容