一.环境搭建
appium自动化抓取数据需要配置好相关环境,相关操作以后会发相关文章
二.导入相关模块appium,模块导入方式导入同selenium
# 导入appium模块包
from appium import webdriver
import time
import random
三.定义appium配置
# 定义配置字典
desired_caps = {
# 配置系统
"platformName": "Android",
# 定义自动化引擎
"automationName": "Appium",
# 定义模拟器手机名字
"deviceName": 'Android Emulator',
# 系统版本
"platformVersion": "7.1.2",
# 运行软件包名
"appPackage": "com.ss.android.ugc.aweme",
# 抖音启动首界面名称
"appActivity": ".splash.SplashActivity",
# 不清除数据
"noReset": True,
# 使用键盘,支持中文,特殊字符
"unicodeKeyboard": True,
# 设置执行完成后重置键盘
"resetKeyboard": True
}
四.全部代码如下:
# 初始化driver
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 隐式等待时间6s
driver.implicitly_wait(6)
class Mobile_Action:
def swipe_up(self):
# 获取当前手机屏幕高度和宽度
size = driver.get_window_size()
# 屏幕的宽
width = size['width']
# 屏幕的高
height = size['height']
# 屏幕中心坐标
x1 = width / 2
# 屏幕y轴的10分之6
y1 = height / 10 * 6
# 向上滑动的y轴终点坐标
y2 = height / 10
# 滑动间隔时间
# num = random.randint(3, 10)
sl = random.uniform(1, 3)
sll = random.uniform(2, 4)
time.sleep(sl or sll)
# 模拟点击
driver.swipe(x1, y1, x1, y1, 5)
# 捕获异常
try:
# 用户名
user = driver.find_element_by_id('com.ss.android.ugc.aweme:id/title')
print('看到我超过1秒,就是阻塞在这了')
# 内容
content = driver.find_element_by_id('com.ss.android.ugc.aweme:id/a8y')
# 点赞数
dz = driver.find_element_by_id('com.ss.android.ugc.aweme:id/bcu').get_attribute('name')
# 评论数
pl = driver.find_element_by_id('com.ss.android.ugc.aweme:id/ave').get_attribute('name')
# 音乐
music = driver.find_element_by_id('com.ss.android.ugc.aweme:id/exd').get_attribute('name')
# 获取出全部信息
all_content = ('用户名:'+user.text)+'\n'+('内容:'+content.text)+'\n'+('点赞数:'+dz)+'\n'+(
'评论数:'+pl)+'\n'+('背景音乐:'+music)
# 输出内容
print(all_content)
# num = random.uniform(0.5, 3)
# time.sleep(num)
# 400毫秒为滑动时间
driver.swipe(x1, y1, x1, y2, 400)
# 异常处理
except:
print('遇到了直播间')
time.sleep(4)
# 400毫秒为滑动时间
driver.swipe(x1, y1, x1, y2, 400)
time.sleep(3)
# 退出直播间
driver.swipe(685, 77, 685, 77, 4)
driver.find_element_by_id('com.ss.android.ugc.aweme:id/gfc').click()
time.sleep(1)
driver.swipe(x1, y1, x1, y2, 400)
if __name__ == '__main__':
ma1 = Mobile_Action()
# 首次启动等待时间
time.sleep(10)
# 设置滑动次数
for i in range(50):
ma1.swipe_up()