近期文章回顾
导语
带大家写个微博自动抽奖小程序吧,motivation和之前的B站自动抽奖小程序一样:
不想内卷了,整个B站全自动抽奖的小程序吧,万一不小心暴富了呢~
废话不多说,让我们愉快地开始吧~
相关文件
关注微信公众号"Charles的皮卡丘",公众号内回复"微博自动转发抽奖"获取。
开发工具
Python版本:3.7.8
相关模块:
DecryptLogin模块;
DecryptLoginExamples模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
先睹为快
首先,pip安装一下DecryptLoginExamples模块:
pip install DecryptLoginExamples然后简单写几行代码调用就ok啦:
from DecryptLoginExamples import clientconfig = {'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 += 1response = 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: breakfor 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]:continueelse: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,大功告成啦,完整源代码详见相关文件~
更多
代码截止2022-05-15测试无误。
不定期更新有趣内容的知乎账号:
白露未晞me,主页:https://www.zhihu.com/people/charles_pikachu不定期更新有趣内容的B站账号:
白露未晞me,主页:https://space.bilibili.com/406756145同步更新的开发者头条:
Charles的皮卡丘,主页:https://toutiao.io/subjects/470780想加入微信公众号交流群的,后台回复“交流群”即可。