目录
导语
带大家写个微博自动抽奖小程序吧,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,大功告成啦
© 版权声明
THE END
暂无评论内容