1 目 标 场 景

以今日头条极速版为首,包含趣头条、东方头条、全名小视频在内的 App 都有看新闻、视频送金币的活动,当金币达到一定量后,就可以提现到微信、支付包。

如果单纯靠人工去点击看新闻和视频,会浪费很多时间。本文的目标是利用 Python 驱动手机去看新闻和视频,每天帮我们薅一个早餐钱。

下面以「东方头条」客户端为例展开说明。

2 准 备 工 作

元素的定位需要借助 Airtes,需要在 PC 端进行安装,具体可以参考上一篇。另外这里以 Android 系统手机为例,所以提前配置好了 adb 环境。

另外,需要在虚拟环境内安装「pocoui」库。

pip3 install pocoui

3 分 析 思 路

首先我们需要利用 adb 命令打开东方头条 App。

使用 Android Studio 的 Analyze Apk 工具,可以获取应用包名和初始 Activity 分别是:

com.songheng.eastnews

com.oa.eastfirst.activity.WelcomeActivity

然后使用「adb shell am start」命令去打开东方头条的客户端。

# 应用包名
package_name = 'com.songheng.eastnews'# 初始Activity
activity = 'com.oa.eastfirst.activity.WelcomeActivity'def start_my_app(package_name, activity_name):"""打开应用adb shell am start -n com.tencent.mm/.ui.LauncherUI:param package_name::return:"""os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))start_my_app(package_name, activity)

由于第一次打开应用,会有一个显示广告的界面,我们需要通过 Airtest 获取到「跳过广告」元素,执行点击操作,让应用快速进入到主页面。

def __pre_and_skip_ads(self):"""预加载和跳过广告:return:"""# 1.广告页面元素的出现# 两种样式:跳过、跳过广告*秒try:poco('com.songheng.eastnews:id/aoy').wait_for_appearance(10)except Exception as e:print('等待广告元素异常')print(e)ads_element = poco(name='com.songheng.eastnews:id/aoy', textMatches='^跳过广告.*$')ads_element1 = poco(name='android.widget.TextView', text='跳过')# 跳过广告(0s)if ads_element.exists():print('跳过广告1!!!')ads_element.click()if ads_element1.exists():print('跳过广告2!!!')ads_element1.click()# 2.等到到达主页面poco('com.songheng.eastnews:id/g_').wait_for_appearance(120)

到达主页面之后,我们发现主要有 3 种方式获取金币,分别是「阅读文章」、「播放视频」、「播放小视频」,另外一种获取金币的方式就是归纳于其他方式中。

首先,我们使用 Airtest 来分析新闻 Tab 的列表。

新闻列表可以通过获取 name 为「com.songheng.eastnews:id/g_」 的元素,再取其所有子元素就能获取到第一页的新闻列表。

lv_elements = poco('com.songheng.eastnews:id/g_').children()if not lv_elements.exists():print('新闻列表不存在')return# 遍历每一条新闻
for news_element in lv_elements:# 新闻标题news_title = news_element.offspring('com.songheng.eastnews:id/pb')#作者author_element = news_element.offspring('com.songheng.eastnews:id/a4f')

需要注意的是,上面获取的新闻列表中有很多广告和点击下载的内容,需要过滤掉。

# 4.过滤广告
# 到这里标识此条新闻:是一条有效的新闻【包含广告】
# 注意:部分广告【包含点击标题就自动下载,左下角显示广告字眼等】要过滤掉
# 场景一:
if news_element.attr('name') == 'android.widget.FrameLayout':print('广告!这是一个FrameLayout广告,标题是:%s' % news_title.get_text())continue# 常见二:点击标题直接下载其他应用
ads_tips_element = news_element.offspring(name='com.songheng.eastnews:id/a4f', text='广告通')
if ads_tips_element.exists():print('广告!这是一个【广点通】广告,标题是:%s' % news_title.get_text())continue# 常见三:有效角标识是广告的图标【奇虎广告】
ads_tips_element2 = news_element.offspring('com.songheng.eastnews:id/q5')
if ads_tips_element2.exists():print('广告!广告标题是:%s' % news_title.get_text())continue

只有判断是一条正常的新闻,才点击新闻的标题元素进入新闻详情页面,如果右下角的「时间条元素」存在才代表阅读此篇新闻能获取到金币。

red_coin_element = poco('com.songheng.eastnews:id/aq8')
if not red_coin_element.exists():print('当前新闻没有红包,返回!')self.__back_keyevent()continue

为了更真实的模拟人为看新闻这一操作,随机地模拟向上或向下滑动屏幕。

这里设置每篇文章阅读时间为 30 秒,阅读完成之后,执行返回操作,直到回到主界面,这样就完成了查看一篇新闻获取金币的流程。

oldtime = datetime.datetime.now()
while True:self.__swipe(True if random.randint(0, 1) == 0 else False)newtime = datetime.datetime.now()interval_time = (newtime - oldtime).secondsif interval_time >= 30:print('阅读30秒新闻完成')breakself.__read_key_news()

接着可以从下往上滑动页面,获取到新的页面的新闻列表,循环的进行阅读。

 while True:self.watch_news_recommend()print('查看一页完成,继续查看下一页的新闻。')# 滑动下一页的新闻poco.swipe([0.5, 0.8], [0.5, 0.3], duration=1)

另外,注意应用的标题栏隔一段时间可以领取金币,定义一个方法去领取。

def get_top_title_coin(self):"""顶部金币领取仅仅在新闻首页的时候才可以领取:return:"""get_coin_element = poco(name='com.songheng.eastnews:id/arq', text="领取")if get_coin_element.exists():print('顶部有金币可以领取!')get_coin_element.click()print('领完金币后可以关闭对话框!')# 关掉对话框self.__back_keyevent()else:print('顶部没有金币或者不在首页')

然后可以点击视频 Tab 去切换到视频页面。和看新闻一样,这里同样是获取视频列表元素去遍历查看视频。

 def __video(self):"""查看视频:return:"""poco('com.songheng.eastnews:id/ko').click()while True:# 视频列表poco('com.songheng.eastnews:id/a0z').wait_for_appearance()sleep(2)self.__read_key_news()video_elements = poco('com.songheng.eastnews:id/a0z').children()print('video items是否存在:')print(video_elements.exists())# 遍历视频# 注意:视频播放完全可以提前返回for video_element in video_elements:# 1.标题元素video_title_element = video_element.offspring('com.songheng.eastnews:id/a3q')# 播放按钮video_play_element = video_element.offspring('com.songheng.eastnews:id/nj')# 2.必须保证【视频标题】和【播放按钮】都可见if not video_title_element.exists() or not video_play_element.exists():continue# 3.标题video_title = video_element.offspring('com.songheng.eastnews:id/a3q').get_text()print('当前视频的标题是:%s,播放当前视频' % video_title)# 点击播放视频video_play_element.focus("center").click()# 4.播放视频self.play_video()print('播放下一个视频')self.__back_keyevent()# 滑动到下一页的视频poco.swipe([0.5, 0.8], [0.5, 0.3], duration=0.2)

观看小视频获取金币的操作最为简单。首先切换到小视频 Tab,获取到第一个视频的元素,执行点击操作,开始播放小视频。

poco('com.songheng.eastnews:id/kr').click()# 加载出列表元素,点击第一项进入
poco('com.songheng.eastnews:id/a0p').child('com.songheng.eastnews:id/g_').wait_for_appearance(60)
poco('com.songheng.eastnews:id/a0p').child('com.songheng.eastnews:id/g_').children()[0].click()

最后只需要等待视频播放 30 秒之后,使用 swipe 函数向左滑动屏幕切换到下一个视频,就可以实现反复播放获取金币的操作。

while True:sleep(30)# 向左滑动poco.swipe([0.9, 0.5], [0.1, 0.5], duration=0.2)

4 结 果 结 论

执行程序,手机会自动打开东方头条客户端,执行阅读新闻、看视频和小视频的一系列操作。

最后只需要将阅读新闻、播放视频和小视频的时间分配好,一个客户端获取金币达到上限后,就关闭应用,然后切换到其他 App 客户端,继续阅读新闻和视频,就可以实现薅多个平台的羊毛。

让Python每天帮你薅一个早餐钱相关推荐

  1. 刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码)

    刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码) 测试开发社区  6天前 文章转载自公众号  AirPython , 作者 星安果 阅读文本大概需要 12 分钟. 1 目 标 场 景 ...

  2. 薅羊毛 | 让Python每天帮你薅一个早餐钱

    阅读文本大概需要 12 分钟. 1 目 标 场 景 以今日头条极速版为首,包含趣头条.东方头条.全名小视频在内的 App 都有看新闻.视频送金币的活动,当金币达到一定量后,就可以提现到微信.支付包. ...

  3. python自动卸载win程序_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序...

    本文说明 今天和一个朋友吃饭,她说我经常使用Excel制作工资条,但是每个月都要做一遍,你能不能用python写一个代码,能够自动化完成这个工作.这当然可以啦,就是这么牛逼! 我们先来看看原始数据是什 ...

  4. 打印工资条怎么做到每个人都有表头明细_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?...

    本文说明 今天和一个朋友吃饭,她说我经常使用Excel制作工资条,但是每个月都要做一遍,你能不能用python写一个代码,能够自动化完成这个工作.这当然可以啦,就是这么牛逼! 我们先来看看原始数据是什 ...

  5. 租房不要急,Python来帮您(一个超级有用的租房技巧)

    租房的一般步骤 选房 1.1 距离筛选 2.2 价格筛选 看房 2.1 现场实际环境 2.2 周边环境 签合同 优化目标 选房是最为关键的一步,选择好合适的房子可以让我们事半功倍,不用来回跑.而且选房 ...

  6. python+appium+夜神模拟器刷快手极速版金币套现,帮你赚够早餐钱

    环境准备 一.准备python环境 二.配置好appium库 三.准备好工具:1.Android SDK 2.Appium Server 3.JDK 4.夜神模拟器 原理 模拟人的手指去点击手机,打开 ...

  7. 可转债打新提醒小助手!让你不错过每一个搞钱机会!

    这是「活用数据」的第 14 篇原创文章 本文主要介绍如何使用Python从零开始搭建一个可转债打新微信提醒工具. 最近有个朋友说他经常忘记打新可转债,仿佛错过了一个亿. 于是,我就想着能不能用Pyth ...

  8. python什么工作好找女朋友_程序员,三分钟教你用 Python 帮你找一个女朋友

    原标题:程序员,三分钟教你用 Python 帮你找一个女朋友 什么是单身税? 单身税的历史可以追溯到2015年韩国的新政, 低生育率逼得韩国产生了这一政策. 现在我国也要实行这一政策, 很多单身狗就接 ...

  9. 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划

    作者 | 菜园子哇 编辑 | 唐小引 来源 | CSDN 博客 马上上班了,回来的路上,上班地铁上都是非常急需口罩的. 目前也非常难买到正品.发货快的口罩,许多药店都售完了. 并且,淘宝上一些新店口罩 ...

最新文章

  1. 一元多项式的乘法与加法运算_行测数学运算之速算与技巧
  2. Berkeley DB——Database
  3. Fabric--启动网络自动
  4. 干货 | 算法工程师入门第二期——穆黎森讲增强学习(二)
  5. 添加web引用和添加服务引用有什么区别?
  6. oracle exp 乱码 942,Oracle exp/imp字符集相关问题
  7. 扬尘监测系统_工地扬尘监测_工地扬尘监测解决方案
  8. 自定义View 进度条
  9. Create a restful application with AngularJS and CakePHP (I)
  10. Windows下MySQL的详细安装教程
  11. jest单元测试-基础
  12. soapui脚本链接mysql_SOAPUI中文教程---脚本和脚本库
  13. Java与模式.pdf
  14. 自制VBS自动刷屏器,再也不怕刷屏刷不过别人了
  15. Java Applet
  16. “用户体验及可用性测试”读后感
  17. html 横屏滚动字幕,手机知识:手机横屏滚动字幕
  18. Android 的Recovery机制
  19. INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
  20. C语言 统计元音字母个数

热门文章

  1. PHP语言什么是魔术引号,什么是PHP魔术引号
  2. React的性能优化
  3. sentry 命令_Sentry 错误预警系统的运维
  4. 在cmd下用cd命令进不了D盘的问题
  5. Keras神经网络层学习
  6. 如何安装Virtual Box方法
  7. 在京东工作8年的程序员,35岁被裁拿到30多万的赔偿,终于自由了
  8. LruCache之LruCache分析
  9. Android LruCache 缓存
  10. 8puzzle java 代码_八数码难题(8 puzzle)深度优先和深度优先算法