app小程序手机端Python爬虫实战15-通过U2实现滑动手机视频
import uiautomator2 as u2
class Douyin(object):
# 在__init__
def __init__(self, serial="127.0.0.1:62001"):
self.d = u2.connect_usb(serial = serial)
self.handle_watcher()
self.start_app()
self.size = self.get_windowsize()
def start_app(self):
"""启动app"""
self.d.app_start(package_name="com.ss.android.ugc.aweme")
def handle_watcher(self):
# 取消通知权限
self.d.watcher.when('//*[@resource-id="com.ss.android.ugc.aweme:id/a4r"]').click()
# 发现滑动查看更多
self.d.watcher.when('//*[@text="滑动查看更多"]').click()
# 监控器写好之后 通过start方法启动
self.d.watcher.start()
def get_windowsize(self):
"""获取窗口大小"""
return self.d.window_size()
def swipe_dou(self):
"""滑动抖音视频和点击视频发布者头像的操作"""
# 判断是否正常的进入到视频页面
# 考虑网络情况
if self.d(resourceId="com.ss.android.ugc.aweme:id/yy", text="我").exists(timeout=20):
while True:
# 查看是不是正常的发布者(有加关注就不是广告)
if self.d(resourceId="com.ss.android.ugc.aweme:id/u0").exists:
# 是正常的发布者,点击头像
self.d(resourceId="com.ss.android.ugc.aweme:id/tw").click()
# 返回
self.d(resourceId="com.ss.android.ugc.aweme:id/et").click()
if self.d(resourceId="com.ss.android.ugc.aweme:id/yy", text="我").exists:
# 进入正常的视频页面 开始下滑
x1 = int(self.size[0] * 0.5)
y1 = int(self.size[1] * 0.9)
y2 = int(self.size[1] * 0.15)
self.d.swipe(x1, y1, x1, y2)
if __name__ == '__main__':
k = Douyin()
k.swipe_dou()