python App爬虫怎么实现?答案在这有!

一、环境配置

在进行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()

爬取到的信息

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容