【Python】利用python爬取微信朋友info

本文介绍了使用Python的itchat库爬取微信朋友信息,包括统计男女比例、抓取头像拼图、获取签名制作词云图及构建聊天机器人。在原教程基础上进行了改进,修复了词云图显示问题。

#前言
今天在工作室学习时,偶然被某公众号推送了《我用python爬了爬自己的微信朋友》,因为本身也是在学习python的过程,索性就中断了手头的工作,点进去看,并操作了一番,学习了itchat模块,并查阅了相关资料做了一些拓展学习。

#安装itchat

笔者使用pip工具包进行安装,pip install itchat
安装完毕后 试着进入python写入import itchat,没有任何提示说明安装成功。

#统计微信好友男女比例

#-*- coding:utf-8 -*-
#导入需要使用的相关模块
import itchat
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
import numpy as np
import PIL.Image as Image
from os import path
from scipy.misc import imread	

#登录方法,会弹出登录二维码,用微信扫描登录
itchat.auto_login()		

#关于所有微信还有的资料信息都封装在这个方法里
friends = itchat.get_friends(update=True)[0:] 

#获取好友性别信息
male = female = other = 0

#遍历好友信息
for i in friends[1:]:
	#按照微信资料上的信息规则,男1,女2,其他3
	sex = i['Sex']
	if sex == 1:
		male += 1
	elif sex == 2:
		female +=1
	else:
		other +=1

total = len(friends[1:])

print('男生好友:%.2f%%' % (float(male)/total*100) + '\n' +
'女生好友:%.2f%%' % (float(female
Python爬取微信朋友圈有多种方法,但各有优缺点: 1. **使用itchat包实现PC端网页版微信登录爬取数据**:此方法已不可用,因为微信已经关闭网页版 [^1]。 2. **使用pywinauto库在PC端微信爬取数据**:需要安装psutil和pywinauto库,以下是示例代码: ```python import psutil import pywinauto from pywinauto.application import Application PID = 0 print("获取微信进程id") for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name']) except psutil.NoSuchProcess: print("没有打开微信") pass else: if 'WeChat.exe' == pinfo['name']: PID = pinfo['pid'] print("找到微信进程") print("用PyWinAuto 实例化一个应用") app = Application(backend='uia').connect(process=PID) print("打开微信朋友圈") win = app['微信'] pyq_btn = win.child_window(title="朋友圈", control_type="Button") cords = pyq_btn.rectangle() pywinauto.mouse.click(button='left', coords=(cords.left + 10, cords.top + 10)) print("打开微信朋友圈完成") pyq_win = app['朋友圈'] print(pyq_win.dump_tree()) ``` 操作步骤为:先打开电脑微信并最大化,再运行程序。不过,Pywinauto库在2019年之后未再维护,很多模块不兼容win11 [^1][^2]。 3. **调用API**:这种方式最方便,但微信官方并不提供朋友圈数据接口,最后得到的数据只有通讯录内容 [^1]。 4. **使用Appium自动化模拟操作爬数据**:Appium不是一个库,是一套软件,安装需要Java环境等,还有配置,非常麻烦。不过利用Appium可以做到App的可见即可爬,也能实现自动化驱动和数据爬取,但实际运行后,其解析比较烦琐,且容易发生重复和中断。若将mitmdump和Appium结合,让mitmdump监听App数据实时处理,Appium只负责自动化驱动,可提高爬取和解析效率 [^1][^5]。 5. **使用uiautomator2库自动化模拟人工操作**:uiautomator2比Appium简单易上手,但是目前相关代码较少 [^1]。 6. **代码实现进入朋友圈页面**:登录完成之后,进入朋友圈的页面。选中朋友圈所在的选项卡,点击朋友圈按钮,即可进入朋友圈,代码如下: ```python def enter(self): # 选项卡 tab = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@resource-id="com.tencent.mm:id/bw3"][3]'))) tab.click() # 朋友圈 moments = self.wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/atz'))) moments.click() ``` [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值