文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python使用Appium在移动端抓取微博数据的实现

2024-04-02 19:55

关注

使用Appium在移动端抓取微博数据

Appium是移动端的自动化测试工具,读者可以类比为PC端的selenium。通过它,我们可以驱动App完成自动化的一系列操作,同样也可以爬取需要的内容。

这里,我们需要首先在PC端安装Appium软件,安装下载的地址如下:https://github.com/appium/appium-desktop/releases

安装软件的步骤非常简单,就与大多数软件安装步骤一样,这里不在赘述。

但是只安装Appium软件并不能操作手机App,还需要下载专业的Android工具Android SDK,这里读者可以直接下载安装Android Studio即可,安装完成之后,Android SDK也就安装完成了。

基础的配置到这里就结束了。下面,我们来通过Appium软件操作手机App。

查找Android App的Package和入口

这里,博主主要介绍如何操作Android手机,感兴趣的可以自己查阅资料配置IOS端。我们先来打开Appium软件,看看其登录界面。

默认界面

如上图所示,我们不需要更改任何参数,只需要点击"Start Server v1.18.0"按钮,进行登录操作,登录之后,会出现如下界面。

步骤2

这里,我们点击放大镜即可。点击之后,会出现步骤4的界面,我们需要在这里界面之中配置你需要操作或者说爬取的App。

比如,这里博主需要爬取微博App的数据,那么你需要下载微博App的.apk安装文件,然后通过反编译查找其包名与启动界面。具体反编译步骤如下:

步骤3

如上图所示,我们需要通过压缩文件打开weibo.apk安装包,将AndroidManifest.xml拷贝出来。然后通过AXMLPrinter2.jar工具反编译AndroidManifest.xml,默认AndroidManifest.xml是乱码,反编译命令如下:


java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

然后,我们在打开其AndroidManifest.txt就可以看到微博的包名以及启动界面的Activity名称,具体如下所示:

效果图

这里,我们得到微博的包名为:com.sina.weibo,而微博的启动界面为:com.sina.weibo.MainTabActivity。接着,可以配置Appium软件,效果如下:

步骤4

这里,读者可以直接点击Start Session,也可以点击保存Save As方便下一次直接使用。这里,博主先保存再点击Start Session(注意,deviceName是关于手机里面的设备名称,并不一定是你的手机名称):

步骤5

可以看到,现在我们的微博手机界面已经在Appium软件上显示了。下面,我们可以使用上面的眼睛按钮,监听我们要操作的步骤,然后保存为一个动作链。

记录微博刷新动作

在实际的微博中,我们通过下拉刷新微博界面。不过,其实还可以通过点击底部的首页按钮进行刷新,记录操作并生成Python代码的步骤如下所示:

步骤1

这里,我们需要先点击上面的眼睛记录我们后续的操作。然后你可以选中首页按钮,再点击最右边的Tap,即完成了首页的刷新动作,同时也会生成对应的操作代码:

步骤2

默认生成的操作语言是Java,你可以通过上图下拉选择自己需要的语言。这里,博主选择Python,毕竟讲解的是Python爬虫。

虽然上面的代码确实是操作手机App的代码,但是你直接copy到python编辑器,肯定是无法运行的,我们需要安装Appium-Python-Client包:


pip install Appium-Python-Client

安装完成之后,我们通过”from appium import webdriver“引入开发包,然后就可以通过上面的代码进行App爬虫或者说一系列动作链的操作了。

这里,我们先来实现将刚才通过Appium的操作,全部转换为代码形式,具体代码如下所示:


from appium import webdriver
import time
server="http://localhost:4723/wd/hub"
desired_caps = {
    "platformName": "Android",
    "deviceName": "liyuanjing",
    "appPackage": "com.sina.weibo",
    "appActivity": "com.sina.weibo.MainTabActivity",
}
driver=webdriver.Remote(server,desired_caps)
time.sleep(10)
el2 = driver.find_element_by_accessibility_id("首页")
el2.click()

如上面代码所示,这样我们就实现了通过软件操作App的全部步骤。不过,这里有一个小问题,因为打开App首次都是要赋予权限的,博主刚才手动关了,并没有录制这个动作。

所以,读者可以自己把赋予权限的步骤也录制进去,那么就是全自动了,这里作者偷个懒,就不录制了。

爬取微博第一条信息

刚刚我们通过刷新的步骤,重新获取了一遍微博首页的内容。现在,我们通过代码来获取首页第一条微博的内容。我们先来看看代码:


from appium import webdriver
import time

server = "http://localhost:4723/wd/hub"
desired_caps = {
    "platformName": "Android",
    "deviceName": "liyuanjing",
    "appPackage": "com.sina.weibo",
    "appActivity": "com.sina.weibo.MainTabActivity",
}
driver = webdriver.Remote(server, desired_caps)
time.sleep(10)
descs = driver.find_element_by_id("com.sina.weibo:id/contentTextView")
print(descs.get_attribute("content-desc"))

这里,我们通过ID找到了第一条微博的控件,同时通过其属性"content-desc"获取到了微博的内容。图解效果如下:

效果图

运行之后,效果如下:

最终效果

当然,这里之所以不同是因为我们手机运行代码将微博界面又重新启动了一遍。不过这是我们手机运行后的第一条微博的信息。

到此这篇关于Python使用Appium在移动端抓取微博数据的实现的文章就介绍到这了,更多相关Python Appium抓取微博数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯