如何使用appium爬取手机app的数据

工具:windows,pycharm,appium
第一步:环境搭建:
运行之前将环境调试好,需要安装Android,java,nodejs,appium
安装方法自行百度。
安装好之后,打开cmd,输入appium,出现如下界面,说明你的环境搭建好了。
在这里插入图片描述第二步:配置手机:
打开手机的usb开发者模式,打开方式自行百度。
小米的要再打开一个usb调试(安全设置),这个原来没打开,死活连不上。
如何使用appium爬取手机app的数据_第1张图片第三步:连接手机:
插上手机之后,会让你在手机上安装一个appium settings,点击安装:
如何使用appium爬取手机app的数据_第2张图片在终端输入:adb devices
会看到连接的手机
如何使用appium爬取手机app的数据_第3张图片记录下来,后面要用。
然后重新启动一个cmd,切到你的SDK安装目录下面,找到uiautomatorviewer.bat 这个文件

然后输入:uiautomatorviewer.bat 回车运行
在这里插入图片描述会弹出来一个窗口,点击第二个图标,就会显示出来你的手机界面:
如何使用appium爬取手机app的数据_第4张图片如何使用appium爬取手机app的数据_第5张图片第四步,测试微信:

	
import time
#以下为启动session时的desired capabilities的设置
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '8.0.0'
desired_caps['deviceName'] = '44f74ffe'
#desired_caps['app']='D:\software\Android\APPS\com.tencent.mm_621.apk',这个是要安装的app的安装包地址,不是必须的,有#这个项的话会先通过这个地址安装app,我没有用这个,直接用的Package名和activity名
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
#desired_caps['automationName'] = 'uiautomator2'

#以下为启动driver,以及定位元素和操作元素的一些用例操作
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

打开pycharm,粘贴上面的代码:

platformVersion 为安卓版本号,手机上都可以查到。
deviceName      是刚才记录的手机名称

这里说一下appPackageappActivity的获取方式:
将手机上的微信app传到电脑上,放入一个文件夹,这里放入D盘中:
然后终端输入:aapt dump badging D:\base.apk
base.apk 就是你放入电脑中的app名称。
输入aapt没有反应的,要在环境变量中添加一下或者切到aapt的安装目录下
如何使用appium爬取手机app的数据_第6张图片如何使用appium爬取手机app的数据_第7张图片先启动appium: 在终端输入:appium
再运行代码,会发现手机上的微信会自动触发。
如何使用appium爬取手机app的数据_第8张图片第五步:爬取今日头条数据:
手机上没有今日头条app的,自己先下载安装。
然后按照第四步的步骤,获取appPackageappActivity的名称,
然后运行如下代码:

	from appium import webdriver
	import time
	
	
	def getSize(driver):
	    x = driver.get_window_size()['width']
	    y = driver.get_window_size()['height']
	    return (x, y)
	
	#屏幕向上滑动
	def swipeUp(driver,t=1000):
	    l = getSize(driver)
	    x1 = int(l[0] * 0.5)    #x坐标
	    y1 = int(l[1] * 0.75)   #起始y坐标
	    y2 = int(l[1] * 0.25)   #终点y坐标
	    driver.swipe(x1, y1, x1, y2,t)
	
	#屏幕向下滑动
	def swipeDown(driver,t=1000):
	    l = getSize(driver)
	    x1 = int(l[0] * 0.5)  #x坐标
	    y1 = int(l[1] * 0.25)   #起始y坐标
	    y2 = int(l[1] * 0.75)   #终点y坐标
	    driver.swipe(x1, y1, x1, y2,t)
	
	
	#以下为启动session时的desired capabilities的设置
	desired_caps = {}
	desired_caps['platformName'] = 'Android'
	desired_caps['platformVersion'] = '8.0.0'
	desired_caps['deviceName'] = 'Redmi Note3'
	#desired_caps['app']='D:\software\Android\APPS\com.tencent.mm_621.apk',这个是要安装的app的安装包地址,不是必须的,有#这个项的话会先通过这个地址安装app,我没有用这个,直接用的Package名和activity名
	desired_caps['appPackage'] = 'com.ss.android.article.news'
	desired_caps['appActivity'] = 'com.ss.android.article.news.activity.SplashBadgeActivity'
	#desired_caps['automationName'] = 'uiautomator2'
	
	#以下为启动driver,以及定位元素和操作元素的一些用例操作
	driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
	time.sleep(10)
	#results = driver.find_elements_by_id("com.ss.android.article.news:id/title")
	results = driver.find_elements_by_xpath("//android.widget.TextView")
	for item in results:
	    print(item.text)
	
	time.sleep(2)
	
	swipeUp(driver)
	
	results = driver.find_elements_by_xpath("//android.widget.TextView")
	for item in results:
	    print(item.text)
	
	
	# driver.quit()

发现手机上的今日头条自动打开,然后终端打印出今日头条上的数据:

如何使用appium爬取手机app的数据_第9张图片

你可能感兴趣的:(爬虫)