目录

  • 使用Appium在移动端抓取微博数据
    • 查找Android App的Package和入口
    • 记录微博刷新动作
    • 爬取微博第一条信息

使用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"按钮,进行登录操作,登录之后,会出现如下界面。


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

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


如上图所示,我们需要通过压缩文件打开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软件,效果如下:


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


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

记录微博刷新动作

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


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


默认生成的操作语言是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 timeserver = "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"获取到了微博的内容。图解效果如下:


运行之后,效果如下:


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

本篇博文已经5000字了,后面起码还有2万字关于Appium的内容与实战。所以,博主会放到后面专门的一篇进行讲解,读者如果需要学习Appium,看完这篇文章能把启动配置任意App的效果实现,就非常不错了,毕竟饭要一口一口吃。

Python爬虫:使用Appium在移动端抓取微博数据相关推荐

  1. Python爬虫 | 斗图网表情包抓取

    Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析   打开斗图吧的主页,发现网址非常有 ...

  2. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  3. Python爬虫实战(4):抓取淘宝MM照片

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  4. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  5. R语言爬虫系列(1)XML抓取表格数据

    使用XML抓取表格数据 install.packages("XML") trying URL 'https://cran.rstudio.com/bin/windows/contr ...

  6. php抓取运动步数,使用PHP抓取微博数据

    实现目标 1. 用户发布的微博内容; 2. 用户发布的时间; 3. 用户的名称; (这里我并没有获取) 使用的工具 1. voku/simple_html_dom x-path读取工具 (如果不知道怎 ...

  7. Python爬虫之js加密破解,抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页动态网页 页面解析 step1: 找参数step2:分析js函数step3:分析参数step4: 校验step5:转为python代码 编写爬虫 很多人学 ...

  8. python 爬虫课程推荐_关于递归抓取的课程推荐

    Python爬虫包 BeautifulSoup 递归抓取实例详解概要:爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个 ...

  9. Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片

    今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...

  10. python抓取微博数据中心_空气质量数据网页爬虫加数据处理

    Python这门语言因其简单强大已经火了很久了,但我接触的比较晚,前几个月因为一篇博客开始初步了解这门语言,并且之后模仿某位北邮的前辈的微博写了一个新浪微博的爬虫 这里给出链接:python编写的新浪 ...

最新文章

  1. linux android编译环境,Linux下Android开发安装环境配置
  2. vue-cli3 中跨域解决方案
  3. [转]select、poll、epoll的比较
  4. Android NDK 环境搭建
  5. 显卡mx150和230哪个好_建模渲染用专业图形显卡和游戏显卡哪个更好?
  6. Maven的pom.xml文件详解------The Basics
  7. DOM(document object model),文档对象模型
  8. Springboot+Mysql房产中介在线买房卖房租房系统
  9. 火狐修复神秘的严重漏洞,同时影响Chrome 浏览器
  10. java nio空轮循_Java nio 空轮询bug到底是什么
  11. datatable自定义表单或者导出excel按钮,搜索
  12. PHP生成HTML的技术原理
  13. SDR WiFi平台 gr-ieee802-11 软件无线电实现802.11协议
  14. cursor: not-allowed; readonly的升级版,鼠标经过时,显示为禁止图标
  15. 服务器提取数据库信息,服务器自动提取数据库
  16. 6-5 xcu-sjjg-java-List-5 有序表的插入
  17. kettle与MySQL数据库建立连接教程
  18. 高效通过,PMI-ACP 备考知识突击(九阴真经版)
  19. eap wifi 证书_如何以编程方式在Android中安装CA证书(用于EAP WiFi配置)?
  20. 使用JS判断访问设备是电脑还是手机

热门文章

  1. CV面试题(持续更新!!!)
  2. 拼多多台式计算机主机,拼多多电脑端直播常见问题及解决方案汇总
  3. ubuntu-UML画图工具 Virtual_Paradigm
  4. IntelliJ IDEA 汉化包-支持2018和2019版本
  5. c#调用labview实现巴特沃斯滤波器
  6. 前端 - 实习一个月总结
  7. Lua学习(一):luac、luajit编译与反编译
  8. Flash遮罩之光芒四射、佛光普照
  9. 常见算法的英文命名(排序、查找)
  10. ATMEGA128+ADS1110+12864液晶显示程序和电路图