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

uiautomator 虚幻 195℃ 0评论

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

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

多任务端app应用数据抓取

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

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

我们采用python的多进程实现多任务端app应用数据抓取

通过多进程运行多个任务控制堕胎设备,这些设备都处于一个局域网中,接通 的都是同一个手机的热点。通过http通讯

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

二、创建模拟器模拟多个手机

夜神模拟器创建一个模拟器

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

模拟器的项目初始化可以参考以前的文章:

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

安装好后,界面如下所示

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

三、编写多进程启动代码

主要是添加三个函数:

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()

四、总结

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

? 往期优质文章分享

? 优质教程分享 ?

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

? 资料白嫖,温馨提示 ?

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

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

转载请注明:虚坏叔叔 » app小程序手机端Python爬虫实战19-多进程实现app多个任务端app应用数据抓取

喜欢 (0)

您必须 登录 才能发表评论!