目录

  • Appium爬取wx朋友圈
  • 1、准备工作
  • 2、爬取思路

Appium爬取wx朋友圈

  • 用Appium实现微信朋友圈动态信息抓取,主要包括好友昵称、正文、发布时间;其中正文这一部分我并没有爬取下来;

1、准备工作

  • PC端安装好Appium,Android开发环境和Python版本的Appium API,如何安装Appium: https://blog.csdn.net/weixin_43411585/article/details/89277056
  • 以及PyMongo库,MongoDB,如何安装MongoDB: https://blog.csdn.net/weixin_43411585/article/details/88833680
  • Appium启动App的方式有两种:一种是用Appium内置的驱动器打开App,另一种是用Python程序来实现此操作
    • 将Android手机通过数据线和运行Appium的PC相连,同时打开USB调试功能,确保PC连接到手机
    • Appium如何使用
  • 完整代码见链接,其中一些参数查找可能因为机型不同而不同,具体可以先通过Appium内置驱动模拟操作一遍,看每个元素的标签id是什么,而进行修改;主要是发现按钮,朋友圈按钮,昵称,时间这四个元素,主要代码

2、爬取思路

  • (1)初始化配置,如驱动配置,MongoDB连接配置等

    class Moments():def __init__(self):"""初始化"""# 驱动配置self.desired_caps = {'platformName': PLATFORM,'deviceName': DEVICE_NAME,'appPackage': APP_PACKAGE,'appActivity': APP_ACTIVITY,'noReset': "True"}self.driver = webdriver.Remote(DRIVER_SERVER, self.desired_caps)self.client = MongoClient(MONGO_URL)self.db = self.client[MONGO_DB]self.collection = self.db[MONGO_COLLECTION]# 处理器self.processor = Processor()
    
  • (2)模拟登陆,由于我在Appium驱动配置上加了参数:‘noReset’: “True”;数据不重置,所以模拟登陆这一步可以直接跳过,只要微信是登陆的,代码运行的时候就是直接在已登录状态中;
  • (3)直接选择发现选项卡→朋友圈进入;
        def enter(self):"""进入朋友圈:return:"""# 选项卡time.sleep(15)tab = self.driver.find_elements(By.XPATH, '//*[@resource-id="com.tencent.mm:id/r4"]')[2]tab.click()time.sleep(15)# 朋友圈moments = self.driver.find_element(By.ID, 'android:id/title')moments.click()print("已进入朋友圈")
    
  • (4)抓取动态,由于朋友圈需要拖动,才能看到更多内容,所以,这里需要模拟一个拖动的操作,进行循环;driver.swipe(300,1000,300,300);首先获取点前显示的朋友圈的每条状态对应的区块元素,遍历每个区块元素,再获取内部显示的用户名,和发布时间;
        def crawl(self):"""爬取:return:"""for i in range(15):time.sleep(2)# 上滑self.driver.swipe(300, 1000, 300, 300)# 当前页面显示的所有状态items = self.driver.find_elements(By.XPATH, '//*[@resource-id="com.tencent.mm:id/ej_"]')# 遍历每条状态for item in items:try:# 昵称nickname = item.find_element(By.XPATH, '//*[@resource-id="com.tencent.mm:id/b5o"]').get_attribute('text')# # 正文# content = item.find_element(By.XPATH, '//*[@resource-id="com.tencent.mm:id/kt"]').get_attribute('text')## 日期date = item.find_element(By.XPATH, '//*[@resource-id="com.tencent.mm:id/eec"]').get_attribute('text')# 处理日期date = self.processor.date(date)print(nickname, date)data = {'nickname': nickname,# 'content': content,'date': date,}
    
  • (5)对于时间显示几小时前或者几分钟前的,我们用正则匹配的方法来提取时间中的具体数值,再利用时间转换函数实现时间的转换;例如5分钟前,这个方法先将5提取出来,用当前时间戳减去300即可得到发布的时间戳,然后再转换为标准时间即可。
    class Processor():def date(self, datetime):"""处理时间:param datetime: 原始时间:return: 处理后时间"""if re.match('\d+分钟前', datetime):minute = re.match('(\d+)', datetime).group(1)datetime = time.strftime('%Y-%m-%d', time.localtime(time.time() - float(minute) * 60))if re.match('\d+小时前', datetime):hour = re.match('(\d+)', datetime).group(1)datetime = time.strftime('%Y-%m-%d', time.localtime(time.time() - float(hour) * 60 * 60))if re.match('昨天', datetime):datetime = time.strftime('%Y-%m-%d', time.localtime(time.time() - 24 * 60 * 60))if re.match('\d+天前', datetime):day = re.match('(\d+)', datetime).group(1)datetime = time.strftime('%Y-%m-%d', time.localtime(time.time()) - float(day) * 24 * 60 * 60)return datetime
    
  • (6)最后调用MongoDB的API来实现爬取结果的存储。为了去除重复,这里调用了update()方法,这个操作的关键点事第三个参数True,此参数设置为True,可以实现存在即更新。不存在则插入的操作实现如下所示:
    self.collection.update_one({'nickname': nickname}, {'$set': data}, True)
    

Python_Appium爬取wx朋友圈相关推荐

  1. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  2. Python爬虫爬取微信朋友圈的方法,感兴趣的朋友可以了解下

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 小雨 | 作者 python教程 | 来源 接下来,我们将实现微信朋友圈的 ...

  3. Python爬虫爬取微信朋友圈

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...

  4. Python爬虫实战项目案例——爬取微信朋友圈

    项目实战   Appium爬取微信朋友圈   自动化爬取App数据 基于移动端的自动化测试工具Appium的自动化爬取程序. 步骤 1.JDK - Download JDK,Appium要求用户必须配 ...

  5. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  6. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  7. Python爬取微信朋友圈 ! 让屏蔽你的女神无处可躲 ?

    接下来,我们将实现微信朋友圈的爬取. 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的.而 Appium 不同,Appium 作 ...

  8. python 爬取微信朋友圈的一些信息

    一.工具:使用python 3.6 自带的编辑器IDEL,在命令行可以正常运行. 二.此程序用到的一些库和包: (1)itchat:itchat是一个开源的微信个人号接口,可以登录微信账号:点击打开链 ...

  9. NO.15——使用Appium自动化测试爬取微信朋友圈数据

    一.解析过程 本人使用锤子手机做测试,型号是YQ601,首先打开开发者模式确保手机能与mac相连,打开Appium客户端,配置参数如图 可以理解为Appuim继承自web端的selenium,同样可以 ...

最新文章

  1. 关于API文档浏览神器Dash
  2. 与Andrey Breslav谈论Kotlin 1.0的发布
  3. vant 索引城市不对_Vant Area 省市区选择
  4. Pytest Hooks方法之pytest_collection_modifyitems改变测试用例执行顺序
  5. saveOrUpdate的使用
  6. 次债危机:全世界陪着美国等死
  7. poj 1006 java_POJ 1006 Java:中国剩余定理
  8. centos删除文件不释放_Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少...
  9. VScode环境配置C/C++
  10. 太强了!这款轻量级的数据库中间件完美解决了SpringBoot中分库分表问题?
  11. 复变函数知识总结(1)——序言和准备知识
  12. 期货期权希腊字母与场景模拟
  13. Windows及应用学习笔记
  14. macOS--苹果本安装Win(看完可省200块)
  15. http协议、URL、GET/POST请求报文及响应报文
  16. navigationController.navigationBar 设置背景透明
  17. ArrayList.toArray(T[] a) 的说明
  18. 基金申请-1:基金委网站文件上传发生未知错误怎么办?
  19. 常见的鼠标事件以及onmouseover与onmousemove的区别
  20. 静态变量什么时候会被回收

热门文章

  1. 使用window小娜实现文本转语音
  2. 基于腾讯COS对象存储SDK使用Python编写的文件上传工具第二版
  3. android 购物车实现,Android Studio实现简单购物车功能
  4. JavaScript 行间事件、提取行间事件
  5. uniapp vue3版本 引用color-ui的cu-custom组件问题
  6. 将AAB(Android App Bundle)转换为APK
  7. High-speed Charting Control(MFC绘图控件)--MFC绘图Demo(包含鼠标响应)
  8. [机缘参悟-25]:鬼谷子-反应篇-钓语之术(诱饵、隐蔽、忍耐)
  9. 最强特殊字符、表情符号、Unicdeo字符串处理
  10. (很全)英文外贸网站从建站到推广流程,外贸企业SEOer大菜鸟分享