• app小程序手机端Python爬虫实战19-多进程实现app多个任务端app应用数据抓取


    作者:虚坏叔叔
    博客:https://xuhss.com

    早餐店不会开到晚上,想吃的人早就来了!😄

    多任务端app应用数据抓取

    在这里插入图片描述

    一、python多进程实现多任务端数据抓取

    我们采用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
    
    • 1

    安装好后,界面如下所示

    在这里插入图片描述

    三、编写多进程启动代码

    主要是添加三个函数:

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87

    四、总结

    • 本文介绍了多任务端app应用数据抓取。
    • 如果觉得文章对你有用处,记得 点赞 收藏 转发 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~

    💬 往期优质文章分享

    🚀 优质教程分享 🚀

    • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
    • 🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
    • 🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战 💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    ❤️ Python&C++混合编程❤️难度偏高分享学习Python C++混合编程知识!

    🚀 资料白嫖,温馨提示 🚀

    关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

    请添加图片描述

  • 相关阅读:
    js里面有引用传递吗?
    小红书怎么推广引流?怎么样在小红书上引流?
    Android学习笔记 2.3.3 按钮(Button)组件的功能与用法 && 2.3.4 使用9Patch图片作为背景
    【大数据技术】hive中cluster by(clustered by)在建表时使用与在sql中使用的区别及对结果的影响(很细微)
    windows上的静态链接和动态链接的区别与作用(笔记)
    tf模型落地安卓之旧事重提
    Socks5 与 HTTP 代理在网络安全中的应用
    2022-09-09 Unity InputSystem3——InputAction
    另一个博客
    开源在线客服系统源码微信小程序
  • 原文地址:https://blog.csdn.net/huangbangqing12/article/details/126330176