一、环境配置
在进行app爬虫之前,得先完成一些环境配置:
1、安装所需要的客户端库
我自己的版本是2.0.0,其余版本是否适配没试过
pip install appium-python-client==2.0.0
2、Appium Server相关文件
网盘链接:https://pan.baidu.com/s/1H7CD_Tr1QCpZGggHkHlTMw?pwd=bm20
1. 下载 Appium-windows-1.15.1.exe
2. 安装JDK: jdk-8u211-windows-x64.exe
3. 安装Android SDK: androidsdk.zip
现在已经不能单独安装Android SDK了,必须要一起下载谷歌集成好的包,包含了一个比较大的开发Android的IDE,就是Android Studio,而且Android的官方网站不能直接登录了,所以这里把SDK必须的文件打了一个压缩包,直接解压就可以了。
3、添加环境变量
1. jdk添加环境变量: JAVA_HOME ,指定值为jdk安装目录,比如JAVA_HOME D:\newsoft\jdk-8u211-windows-x64(根据自己的安装目录改变)
2. jdk,jre配置环境变量Path:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
3. 环境变量: ANDROID_HOME ,设置值为sdk包解压目录,比如 D:\newsoft\androidsdk\androidsdk(根据自己的安装目录改变)
4. 配置adb环境变量 Path:加入 adb所在目录,%ANDROID_HOME%\platform-tools\
安装验证
JDK, JRE 安装验证
adb 安装验证
二、连接模拟器
1、下载模拟器
网站:https://www.yeshen.com/
2、修改模拟器文件
1. 打开安装目录,进入到bin目录(比如:D:\newsoft\yeshen\Nox\bin)
2. 把j解压的Android SDK里的adb.exe ,复制到该目录覆盖掉该目录已存在的adb.exe 文件
3. 删掉该目录的nox_adb.exe 文件,再复制一份 adb.exe 并重命名为nox_adb.exe
4. 启动模拟器
5. 进入bin目录打开控制台,执行./nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices -l,看到如下信息就表示成功了(如果是windows系统不用加 ./)
三、设置模拟器
1、打开夜神模拟器
点击右上角的设置齿轮,做如下设置:
2、进入开发者模式
点击桌面的工具—>设置—>关于平板电脑—>鼠标多次点击版本号,进入开发者模式:
四、在模拟器中安装apk软件
1、首先先确认连接上了模拟器:
进入bin目录打开控制台,执行./nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices -l,看到如下信息就表示成功了(如果是windows系统不用加 ./)
2、下载App
这里以及下面的爬虫测试都以bilibili为例,搜索下载bilibili,点击安装即可。
五、模拟器连接Appium
1、启动及配置Appium
打开Appium之后直接点击Start Server就可以了
点击放大镜开始配置模拟器信息编辑
可以直接复制下面的JSON数据粘贴到右侧的输入框中,其中系统版本需要自己到模拟器中的 关于平板电脑 选项中自己查看。
{
"platformName":"Android",
"platformVersion":"7.1.2",
"deviceName":"MI 9"
}
全部信息填写完成后点击Start Session启动将Appium连接至模拟器,这时模拟器中会自动安装一个Appium Settings的软件,Appium通过这个软件控制模拟器的运行。
六、爬取数据
1、查看App应用名
打开模拟器里的bilibili,然后在windows命令行输入:
adb shell
接着输入:
dumpsys activity | grep mFocusedActivity
查看app应用名
2、进行爬虫代码书写,通过箭头点击左边信息框,得到id定位元素获取信息。
import time
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
from selenium.webdriver.common.by import By
caps={
'platformName': 'Android',
'platformVersion': '7.1.2', # 版本
"deviceName":"samsung", #设备名,安卓手机可随意填写
'appPackage':"tv.danmaku.bili", # 包名 ,由上面命令获得
'appActivity':".sms.SmsLoginDialogActivityV2", # 入口 ,由上面命令获得
'noReset' :False,
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
driver.implicitly_wait(10)
# 通过id定位元素
driver.find_element(by=By.ID,value='agree').click()
time.sleep(2)
driver.find_element(by=By.ID,value='expand_search').click()
# driver.find_element(by=By.ID,value='text3').click()
time.sleep(2)
driver.find_element(by=By.ID,value='search_src_text').send_keys("黑神话")
time.sleep(2) # 自动按enter
driver.press_keycode(AndroidKey.ENTER)
time.sleep(2)
data = driver.find_elements(by=By.ID,value='title')
# 这里可以写无限下滑代码,自动下滑获取信息
for i in data:
print(i.text)
input('输入任意值退出')
driver.quit()
爬取到的信息