​昨天小帅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朋友圈数据: 刚点了外卖,小哥有点超时才送到。我倒不觉得有什么,可是小哥将餐物双手递给我后接下来的动作让我惊讶到了:

他对我深深地鞠了一躬……

抓取到小帅b发布时间: 4月月01

抓取到小帅b朋友圈数据: 有人抱怨现在的互联网产品太霸道,微信不能打开淘宝链接,头条不能放微信二维码,百度搜不到知乎高质量问题……

但其实出门看一下,好像也没有哪家麦当劳可以直接开在肯德基里面卖全家桶的。

抓取到小帅b发布时间: 3月月29

抓取到小帅b朋友圈数据: 有人抱怨现在的互联网产品太霸道,微信不能打开淘宝链接,头条不能放微信二维码,百度搜不到知乎高质量问题……

但其实出门看一下,好像也没有哪家麦当劳可以直接开在肯德基里面卖全家桶的。

抓取到小帅b发布时间: 3月月28

抓取到小帅b朋友圈数据: 这两天听到最多的一句话就是:帅b老仙,法力无边。

整的我差点以为自己有法力了……

抓取到小帅b发布时间: 3月月25

抓取到小帅b朋友圈数据: 夸夸群,写几个微信机器人放群里,搞点夸奖人的语句数据库,根据用户的话检索一下,然后返回相应的夸奖语句。

嗯,然后把我自己放进群里,享受一顿夸,觉得不爽还可以继续改那些夸我的话。

抓取到小帅b发布时间: 3月月22

抓取到小帅b朋友圈数据: 突然发现我好久好久没有讲潮汕话了...

抓取到小帅b发布时间: 3月月20

抓取到小帅b朋友圈数据: 夸夸群,写几个微信机器人放群里,搞点夸奖人的语句数据库,根据用户的话检索一下,然后返回相应的夸奖语句。

嗯,然后把我自己放进群里,享受一顿夸,觉得不爽还可以继续改那些夸我的话。

抓取到小帅b发布时间: 3月月15

抓取到小帅b朋友圈数据: 根据监管部门规定以及相关投诉

这条朋友圈无法观看,但你可以点赞

抓取到小帅b发布时间: 3月月10

抓取到小帅b朋友圈数据: 之前想的是再好的产品也抵不过有强大 IP 支撑的破产品。

但现在想想,IP 也是产品的一部分。

抓取到小帅b发布时间: 3月月05

抓取到小帅b朋友圈数据: 之前想的是再好的产品也抵不过有强大 IP 支撑的破产品。

但现在想想,IP 也是产品的一部分。

抓取到小帅b发布时间: 3月月04

抓取到小帅b朋友圈数据: 9102了,还是有那么多 zf 的网站又丑又难用。

抓取到小帅b发布时间: 3月月01

...

ok

拿到数据还可以进一步存储

小帅b就不说了

因为从下一篇开始

小帅b会说说爬取下来的数据存储相关的

这一篇

主要让你知道如何爬取 app 的数据

如果你想去抓包爬取朋友圈的数据

是很难的

微信做了限制

所以用 Appium 相对来说就简单好多啦

本篇涉及到的源代码一样放在了公众号

在后台发送 「朋友圈」获取

下次见

peace

帅b老仙

法力无边

相关文章

点赞

发功+1

python爬取其他人微信朋友圈_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈...相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 利用python爬取58同城简历数据_python爬虫程序 58同城二手交易信息爬取

    本脚本分为5部分: spider_main    主程序 url_manager    url管理器 html_downloader    网页下载器 html_parser    网页解析器 htm ...

  7. python抓取直播源 并更新_Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据...

    程序说明:抓取斗鱼直播平台的直播房间号及其观众人数,最后统计出某一时刻的总直播人数和总观众人数. 过程分析: 进入平台首页,来到页面底部点击下一页,发现url地址没有发生变化,这样的话再使用urlli ...

  8. python爬取新浪新闻首页_Python爬虫学习:微信、知乎、新浪等主流网站的模拟登陆爬取方法...

    微信.知乎.新浪等主流网站的模拟登陆爬取方法 摘要:微信.知乎.新浪等主流网站的模拟登陆爬取方法. 网络上有形形色色的网站,不同类型的网站爬虫策略不同,难易程度也不一样.从是否需要登陆这方面来说,一些 ...

  9. python爬取公众号历史文章_Python爬虫爬取微信公众号历史文章全部链接

    因为朋友问我能不能找一下一个微信公众号的全部历史文章的链接,我就帮他弄了一下,通过百度和谷歌发现现在大家爬微信公众号的思路基本都是下面两种: 通过搜狗搜索微信公众号然后拿到链接 通过fiddler检测 ...

  10. python爬虫今日头条_python爬虫—分析Ajax请求对json文件爬取今日头条街拍美图

    python爬虫-分析Ajax请求对json文件爬取今日头条街拍美图 前言 本次抓取目标是今日头条的街拍美图,爬取完成之后,将每组图片下载到本地并保存到不同文件夹下.下面通过抓取今日头条街拍美图讲解一 ...

最新文章

  1. 常见一致性协议(一)
  2. HTML5语义化标签综合基础案例,HTML5语义化标签综合案例
  3. 设计printf调试宏
  4. matlab的index函数,写论文第九天:MATLAB之rsindex函数
  5. 欢迎使用CSDN-markdown编辑器1212131
  6. format函数使用matlab,Matlab基本函数-format函数 | 学步园
  7. 纯css实现那些超炫酷的动画效果
  8. Wireshark 在MacOS10.15.3 系统无法显示网卡的解决方法
  9. android opengl教程
  10. 《操作系统原理及应用》题库-选择题
  11. 【题解】【AcWing】3426. 糖果分享游戏
  12. [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]
  13. 【工具类-- posman导出的接口JSON 转为 jmx】
  14. jquery id选择器获取id值含有特殊字符的方法
  15. 第一届“GBASE技术文章”有奖征文圆满收官
  16. 简单粗暴的JavaScript笔记-1
  17. 卓越质量管理成就创新高地 中关村软件园再出发
  18. 国产汽车级双极锁存霍尔传感器CHA44X介绍
  19. PCB简单绘制一般步骤
  20. 安卓棒棒糖,敲出国内ROM厂商真面目

热门文章

  1. 项目一 认识Linux操作系统
  2. sci的figure怎么做_论文攻略丨SCI论文插图怎么做?有这一篇文章就够了
  3. 【PMP】项目生命周期和开发生命周期
  4. Android初级教程 - 四大存储之SP存储
  5. rhino java api demo_用 Rhino 脚本化 Java
  6. Android开发_ARN是什么
  7. 汇川机器人视觉定位通讯程序
  8. 小学英语语法口诀巧记大全,简单实用!
  9. [LOJ6198] 谢特(sam+字典树合并)
  10. 地理信息系统GIS--介绍