作者:虚坏叔叔
博客:https://xuhss.com
早餐店不会开到晚上,想吃的人早就来了!😄
我们采用python的多进程实现多任务端app应用数据抓取
通过多进程运行多个任务控制堕胎设备,这些设备都处于一个局域网中,接通 的都是同一个手机的热点。通过http通讯
夜神模拟器创建一个模拟器
模拟器的项目初始化可以参考以前的文章:
https://xuhss.com/uiautomator/app02
https://xuhss.com/uiautomator/app03
主要是将uiautomator2初始化,并且安装好一个考研帮的app
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe -m uiautomator2 init
安装好后,界面如下所示
主要是添加三个函数:
import uiautomator2 as u2
import time
import adbutils
#导入多进程
import multiprocessing
class HandleKaoyanbang(object):
def __init__(self, serial="127.0.0.1:62001"):
# 当前是通过usb的方法来街道移动设备的
self.d = u2.connect_usb(serial=serial)
self.size = self.get_windowsize()
self.handle_watcher()
def get_windowsize(self):
"""获取手机屏幕的大小"""
return self.d.window_size()
def handle_watcher(self):
"""定义一个监控器:会单独启动一个线程来监控有没有符合要求的控件"""
# 用户隐私协议
self.d.watcher.when('//*[@resource-id="com.tal.kaoyan:id/tip_commit"]').click()
# 广告
self.d.watcher.when('//*[@resource-id="com.tal.kaoyan:id/tv_skip"]').click()
# 监控器写好之后 通过start方法启动
self.d.watcher.start()
def close_app(self):
# 监控器关闭
self.d.watcher.stop()
# 停止考研帮app
self.d.app_stop("com.tal.kaoyan")
# 清理缓存
self.d.app_clear("com.tal.kaoyan")
def handle_kaoyanbang_app(self):
"""启动考研帮app,并实现自动化操作"""
self.d.app_start(package_name="com.tal.kaoyan")
# 点击密码登录
self.d(text="密码登录").click_exists(timeout=10)
# 输入用户名(文本控件-用set_text输入文字)
self.d(resourceId="com.tal.kaoyan:id/login_email_edittext").set_text("11221234233")
# 输入password
self.d(resourceId="com.tal.kaoyan:id/login_password_edittext").set_text("121243")
# 点击登录
self.d(resourceId="com.tal.kaoyan:id/login_login_btn").click()
# 等待页面出现(在10秒内,如果这个页面出现了,我们就进入下一步操作,
if (self.d.wait_activity("com.tal.kaoyan.ui.activity.HomeTabActivity", timeout=10)):
# 点击社区
self.d(text="社区").click_exists(timeout=10)
# 获取到屏幕的坐标
x1 = int(self.size[0] * 0.5)
y1 = int(self.size[1] * 0.9)
y2 = int(self.size[1] * 0.15)
while True:
if self.d.toast.get_message(0)=="没有更多了":
self.close_app()
return
self.d.swipe(x1, y1, x1, y2)
# 获取所有设备的序列号
def get_devices():
# 获取到当前操作系统中所接通的移动设备的序列号
return [d.serial for d in adbutils.adb.device_list()]
# 操控设备函数
def handle_device(serial):
k = HandleKaoyanbang(serial)
# 滑动考研帮
k.handle_kaoyanbang_app()
def main():
# 多进程启动u2滑动移动设备
for i in range(len(get_devices())):
serial = get_devices()[int(i)]
p = multiprocessing.Process(target=handle_device, args=(serial,))
#启动进程
p.start()
if __name__ == '__main__':
main()
点赞
收藏
转发
一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战 💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
❤️ Python&C++混合编程❤️ | 难度偏高 | 分享学习Python C++混合编程知识! |
关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!