昨天小帅b看到一些事情不顺眼

有人偷换概念

忍不住就写了一篇反讽 996 的

没想到有些人看不懂

这就算了

还来骂我

早些时候关注我的小伙伴应该知道我第一时间就发过反对 996 的文章

哎~

不过也好

洗掉一些无脑假粉丝

“你个假粉丝,小帅b不是蔡徐坤”

好了

进入正题

上次

小帅b跟你说了如何安装 Appium 的相关环境

以及让它自动打开了手机上的微信App

相信你已经跃跃欲试

想要来爬取一些手机上的 APP 数据了

那么这次

小帅b就带你爬取微信朋友圈的数据

接下来就是

学习 python 的正确姿势

友情提醒

本篇需要你先安装好 Appium 相关环境才可以哟,如果你还没安装的话快点出门左转,安装完之后再来这里玩耍。

ok

首先我们要知道微信这个 apk 的包名和启动页的 Activity

将你的 Android 鸡连接到电脑

在终端输入 adb devices 确保你已经将你的鸡连接到电脑

如果像上面这样出现设备名称就说明你连接上你的电脑了

如果你插进电脑之后还没发现有任何设备名称显示

那就记得打开 USB 调试,多拔插几次,总会连上的,这是过来人经验

接着

在你的手机里面打开微信

然后打开你的终端输入

adb shell

然后输入

dumpsys activity | grep mFocusedActivity

这时候我们就获取到微信的包名和启动页面的名称了

我们还要知道我们的手机是什么版本的

输入以下命令获取

adb shell getprop ro.build.version.release

那么现在我们就知道了这些必要的信息了

desired_caps = {}   desired_caps['platformName'] = 'Android'   desired_caps['platformVersion'] = '5.1'   desired_caps['deviceName'] = '88CKBM622PAM'   desired_caps['appPackage'] = 'com.tencent.mm'   desired_caps['appActivity'] = '.ui.LauncherUI'

接下来

主要思路就是

自动开启微信

模拟登录微信

找到小帅b的朋友圈

把朋友圈的数据抓下来

想要模拟登录

我们就需要获取到微信的登录按钮这个元素

如何获取呢?

在你安装好的 sdkmanager 的 tool 目录下

有一个叫做 uiautomatorviewer 的工具

windows用户直接双击打开

ubuntu的话可以进入相应的目录

用命令 ./uiautomatorviewer 行打开

~/android/tools/bin$ ./uiautomatorviewer

打开之后是这个鸟样

我们点击菜单栏的第二个图标按钮

这时候你就会发现

手机的屏幕被抓过来了

用鼠标点一下登录按钮你会看到

相应的资源信息都被定位到了

那么要让它自动点击登录按钮就简单了

# 获取到登录按钮后点击 login_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/e4g"))) login_btn.click()

点击登录之后页面是这样的

我们要切换到用邮箱登录

还是老样子

我们获取到按钮,然后让它点击

# 获取使用微信号登录按钮  change_login_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/cou")))  change_login_btn.click()

那么接下来就输入账号密码了

获取到账号和密码的 EditText 和 登录按钮

然后自动输入账号密码

最后点一下登录

# 获取输入账号元素并输入 account = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@resource-id="com.tencent.mm:id/cos"]/android.widget.EditText'))) account.send_keys("你的微信账号") # 获取密码元素并输入 password = self.wait.until(EC.presence_of_element_located((By.XPATH,  '//*[@resource-id="com.tencent.mm:id/cot"]/android.widget.EditText'))) password.send_keys("你的微信密码") # 登录 login = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/cov"))) login.click()

登录之后会弹出一个界面

你愿意把你的通讯录授权给我吗?

呵呵

no!

# 点击去掉通讯录提示框no_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/az9")))no_btn.click()

这样

我们就成功登入微信了

接下来找到小帅b的微信

需要点击上方的搜索按钮

# 获取到搜索按钮后点击 search_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/iq"))) search_btn.click()

这时候会出现输入框

搜索小帅b本b

# 获取搜索框并输入search_input = self.wait.until(EC.presence_of_element_located((By.ID, "com.tencent.mm:id/kh")))search_input.send_keys("wistbean")

这时候会出现一个 item

没错

点击头像进去

# 点击头像进入 xiaoshuaib_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/py"))) xiaoshuaib_btn.click()

接下来几步都是一个道理

主要是进入小帅b的朋友圈

# 点击右上角...进入menu_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/jy")))menu_btn.click()# 再点击头像icon_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/e0c")))icon_btn.click()# 点击朋友圈moment_btn = self.wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/d86")))moment_btn.click()

就这样点进去

进入朋友圈之后

我们来分析一下

可以看到小帅b的朋友圈是这样的

我们需要滑动获取到更多内容

可以使用 Appium 的 swipe 方法

再来

我们需要循环获取到数据

可以看到每条朋友圈都被封装到 ListView 这个容器里面

所以我们要从这里面获取所有数据

然后再进行遍历

那么每一个具体的条目呢?

可以看到

数据被放在了 LinearLayout 的具体容器里面了

所以我们可以根据 id 获取相应的内容

# 获取 FrameLayout items = self.wait.until(EC.presence_of_all_elements_located((By.ID, 'com.tencent.mm:id/eew'))) # 滑动 self.driver.swipe(self.start_x, self.start_y, self.end_x, self.end_y, 2000) #遍历获取 for item in items:     moment_text = item.find_element_by_id('com.tencent.mm:id/kt').text     day_text = item.find_element_by_id('com.tencent.mm:id/eke').text     month_text = item.find_element_by_id('com.tencent.mm:id/ekf').text     print('抓取到小帅b朋友圈数据: %s' % moment_text)     print('抓取到小帅b发布时间: %s月%s' % (month_text, day_text))

至此

我们的代码写完了

来运行一下吧

首先打开 Appium

[Appium] Welcome to Appium v1.12.1[Appium] Appium REST http interface listener started on 0.0.0.0:4723

接着运行爬取朋友圈的代码

截取部分结果

微信启动...登录成功...搜索小帅b...进入朋友圈...抓取到小帅b朋友圈数据: 那天马云说:我从来没碰过钱,我对钱没兴趣。最近马云说:能 996 是一种福气,我每天都 1212。果然,有钱爸爸说话就是好听。抓取到小帅b发布时间: 4月月12抓取到小帅b朋友圈数据: 有本事双击我头像抓取到小帅b发布时间: 4月月10抓取到小帅b朋友圈数据: 刚点了外卖,小哥有点超时才送到。我倒不觉得有什么,可是小哥将餐物双手递给我后接下来的动作让我惊讶到了:他对我深深地鞠了一躬……

微信朋友圈爬虫python_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。...相关推荐

  1. python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一 ...

  2. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈

    ​昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第 ...

  3. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一 ...

  4. python爬去朋友圈_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一时间就发过反对 996 的文章 哎- 不过也好 ...

  5. python3爬虫系列24之重庆微博地铁客运量爬取且可视化输出

    python3爬虫系列24之重庆微博地铁客运量爬取和可视化 1.前言 在python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据里面,我们既是又搞selenium自动化,又 ...

  6. Python爬虫系列之爬取某优选微信小程序全国店铺商品数据

    Python爬虫系列之爬取某优选微信小程序全国商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅 ...

  7. 利用beautifulsoup爬取微博搜素朋友圈背景图

    利用beautifulsoup爬取微博搜素"朋友圈背景图" 微博搜索:朋友圈背景图 1.首先先导入库 requests是用来请求返回网页源代码所需要的请求库,etree和beaut ...

  8. python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析

    前言 17年底,买了清华大学出版社出版的<Hadoop权威指南>(第四版)学习,没想到这本书质量之差,超越我的想象,然后上网一看,也是骂声一片.从那个时候其就对出版社综合实力很感兴趣,想通 ...

  9. python爬取微信好友_如何用 Python 爬取自己的微信朋友

    原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...

最新文章

  1. Spring Security 入门(五):在 Spring-Boot中的应用
  2. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
  3. android扑克发牌动画,JS实现纸牌发牌动画
  4. linux nvme分区,这些 loop 分区是什么鬼东西?
  5. 使用postman请求响应Invalid CORS request
  6. python模拟访问js_python模拟http请求,返回“浏览器不支持javascript,请设置您的浏览器开启javascript支持”...
  7. 乐橙等待登录返回超时_等待登录返回超时什么意思
  8. man statd(rpc.statd中文手册)
  9. 毕业设计之---基于java web的停车管理系统
  10. 在Python中安装meta模块
  11. 研究报告的数据都从哪里来?
  12. Linux console/tty/gui终端模拟器
  13. 什么是剩余参数 ...arg
  14. 事务隔离级别与事务传播行为简介
  15. selenium 程序执行完之后,闪退的解决方法
  16. 计算机组成与结构——概述
  17. CK11,CK11N 成本估算数据读取
  18. 基于stm32的秒表计时器设计系统Proteus仿真(源码+仿真+全套资料)
  19. 2-9课:树和图的现实意义、区别与联系
  20. Flink实战—基于时间窗口定时输出sink

热门文章

  1. excel公式不自动计算_Excel自动计算怎么设置
  2. html语言教程教案,HTML语言与网页制作教案.doc
  3. 普及!cmnet、cmiot还傻傻分不清楚?APN设置看看这一篇就够了!!
  4. 夜神模拟器抓取数据包
  5. PS 2019 Mac版 自学入门系列(二)——区域选中
  6. android屏幕坏 操作手机,手机屏幕碎了怎么备份操作?
  7. 扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(上)
  8. js鼠标拖拽移动盒子但只在父框内移动(三种写法)
  9. 人均8万啊,腾讯豪掷21亿股票奖励员工,爱奇艺却大规模裁员,这就是差距吗?
  10. 设计模式之禅-抽象工厂模式