原文链接:https://mp.weixin.qq.com/s/4EXgR4GkriTnAzVxluJxmg

「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚空
三张图分别是「微信好友头像拼接图」、「性别统计图」、「个性签名统计图」

「微信好友头像拼接图」

「性别统计图」

「个性签名统计图」

安装

pip3 install itchat

主要用到的方法:
itchat.login() 微信扫描二维码登录
itchat.get_friends() 返回完整的好友列表,每个好友为一个字典, 其中第一项为本人的账号信息,传入update=True, 将更新好友列表并返回, get_friends(update=True)
itchat.get_head_img(userName="") 根据userName获取好友头像

微信好友头像拼接图

获取好友信息,get_head_img拿到每个好友的头像,保存文件,将头像缩小拼接至一张大图。
先获取好友头像:

def headImg():itchat.login()friends = itchat.get_friends(update=True)# itchat.get_head_img() 获取到头像二进制,并写入文件,保存每张头像for count, f in enumerate(friends):# 根据userName获取头像img = itchat.get_head_img(userName=f["UserName"])imgFile = open("img/" + str(count) + ".jpg", "wb")imgFile.write(img)imgFile.close()

这里需要提前在同目录下新建了文件夹img,否则会报No such file or directory错误,img用于保存头像图片,遍历好友列表,根据下标count命名头像,到这里可以看到文件夹里已经保存了所有好友的头像。

接下来就是对头像进行拼接

遍历文件夹的图片,random.shuffle(imgs)将图片顺序打乱

用640*640的大图来平均分每一张头像,计算出每张正方形小图的长宽,压缩头像,拼接图片,一行排满,换行拼接,好友头像多的话,可以适当增加大图的面积,具体代码如下:

def createImg():x = 0y = 0imgs = os.listdir("img")random.shuffle(imgs)# 创建640*640的图片用于填充各小图片newImg = Image.new('RGBA', (640, 640))# 以640*640来拼接图片,math.sqrt()开平方根计算每张小图片的宽高,width = int(math.sqrt(640 * 640 / len(imgs)))# 每行图片数numLine = int(640 / width)for i in imgs:img = Image.open("img/" + i)# 缩小图片img = img.resize((width, width), Image.ANTIALIAS)# 拼接图片,一行排满,换行拼接newImg.paste(img, (x * width, y * width))x += 1if x >= numLine:x = 0y += 1newImg.save("all.png")

好友头像图成型,头像是随机打乱拼接的

性别统计图

同样itchat.login()登录获取好友信息,根据Sex字段判断性别,1 代表男性(man),2 代表女性(women),3 未知(unknown)

def getSex():itchat.login()friends = itchat.get_friends(update=True)sex = dict()for f in friends:if f["Sex"] == 1: #男sex["man"] = sex.get("man", 0) + 1elif f["Sex"] == 2: #女sex["women"] = sex.get("women", 0) + 1else: #未知sex["unknown"] = sex.get("unknown", 0) + 1# 柱状图展示for i, key in enumerate(sex):plt.bar(key, sex[key])plt.show()

性别统计柱状图

个性签名统计图

获取好友信息,Signature字段是好友的签名,将个性签名保存到.txt文件,部分签名里有表情之类的会变成emoji 类的词,将这些还有特殊符号的替换掉。

def getSignature():itchat.login()friends = itchat.get_friends(update=True)file = open('sign.txt', 'a', encoding='utf-8')for f in friends:signature = f["Signature"].strip().replace("emoji", "").replace("span", "").replace("class", "")# 正则匹配rec = re.compile("1f\d+\w*|[<>/=]")signature = rec.sub("", signature)file.write(signature + "\n")

sign.txt文件里写入了所有好友的个性签名,使用wordcloud包生成词云图,pip install wordcloud
同样可以采用jieba分词生成词图,不使用分词的话就是句子展示,使用jieba分词的话可以适当把max_font_size属性调大,比如100。
需要注意的是运行不要在虚拟环境下,deactivate 退出虚拟环境再跑,详细代码如下:


# 生成词云图
def create_word_cloud(filename):# 读取文件内容text = open("{}.txt".format(filename), encoding='utf-8').read()# 注释部分采用结巴分词# wordlist = jieba.cut(text, cut_all=True)# wl = " ".join(wordlist)# 设置词云wc = WordCloud(# 设置背景颜色background_color="white",# 设置最大显示的词云数max_words=2000,# 这种字体都在电脑字体中,window在C:\Windows\Fonts\下,mac下可选/System/Library/Fonts/PingFang.ttc 字体font_path='C:\\Windows\\Fonts\\simfang.ttf',height=500,width=500,# 设置字体最大值max_font_size=60,# 设置有多少种随机生成状态,即有多少种配色方案random_state=30,)myword = wc.generate(text)  # 生成词云 如果用结巴分词的话,使用wl 取代 text, 生成词云图# 展示词云图plt.imshow(myword)plt.axis("off")plt.show()wc.to_file('signature.png')  # 把词云保存下

句子图

使用jieba分词产生的词云图

看来,「努力」 「生活」 还是很重要的

itchat 除了以上的信息,还有省市区等等信息都可以抓取,另外还可以实现机器人自动聊天等功能,这里就不一一概述了。

最后附上github地址:https://github.com/taixiang/itchat_wechat

欢迎关注我的博客:https://blog.manjiexiang.cn/
欢迎关注微信号:春风十里不如认识你

转载于:https://my.oschina.net/u/3864642/blog/1822985

python itchat 爬取微信好友信息相关推荐

  1. python爬取微信好友信息_python itchat 爬取微信好友信息

    「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚空 三张图分别是「微信好友头像拼接图」.「性别统计图」.「个性签名统计图」 「微信好友头像拼接图」 「性别统计 ...

  2. python爬取微信聊天记录数据_[使用案例]python如何爬取微信好友信息?(上)

    Python3如何爬取微信好友基本信息,并且进行数据清洗?下面跟着IP海带来的教程,我们一起看看具体的操作要怎么实现. 1.登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整 ...

  3. python,爬取微信好友数据,看他一天天在干嘛

    前段时间发现了一个好玩的东西,一个python的第三方库itchat,它的功能很强大.只要你扫一下它所生成的二维码即可模拟登陆你的微信号,然后可以实现自动回复,爬取微信列表好友信息等功能.基于这个第三 ...

  4. 爬取微信好友信息,进行可视化分析(头像人脸识别部分已更新!)(代码已上传)

    [Code]下载 1.项目说明 本次项目主要实现了以下功能: 2.微信好友信息的获取与文件存储 3.微信好友性别分析 4.微信好友地区分布可视化 5.微信好友个性签名词云图及好友备注词云图 6.微信好 ...

  5. 使用 Python 的 itchat 模块爬取微信好友信息

    偶然间听闻 itchat 模块可以用于实现微信好友信息采集.消息收发管理,于是闲来无事玩一玩,只是简单实现了好友性别统计.地域分布统计.个性签名爬取展示以及头像的爬取拼接,还有很多更强大的功能,有兴趣 ...

  6. python爬取微信好友信息并根据导出的csv做数据分析

    写在前面: 之前了解过一点python,前两天看了一篇文章,一件有趣的事:我用 Python 爬了爬自己的微信朋友,感觉还挺有意思的,不过文章看完了,自己敲代码的时候还是有点坑踩进去的,所以我写篇文章 ...

  7. python爬取微信好友信息

    1.准备工作 平台:windows python版本:Python3.6 IDE:Pycharm5.0 2.所使用的第三方库 wxpy:想要获取微信好友的信息,只能在登录成功后才能获得 常见应用场景: ...

  8. 【Python】爬取微信好友头像完成马赛克拼图~

    代码已重新整理上传到了我的KLab,为了更好的阅读体验可点击

  9. 用Python爬取微信好友头像,才知道好友都是这样的人

    用Pyhon爬取微信好友头像,才知道好友是这样的人 看你的微信头像,就知道你没见过世面 看你的微信名称,我就猜到了你是个渣男 看你的朋友圈,就能反映出你很好追 选择微信头像的纠结症 现如今,不管是常用 ...

最新文章

  1. 关系数据库中,表中的每行就是一个对象
  2. java表达式由什么组成_必知必会之Lambda表达式
  3. 转载:说一下AI的前景吧
  4. findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
  5. JavaScript 获取浏览器版本
  6. wdatepicker不展示秒_华为电源键只能开关机?其实还隐藏了这5个作用,一般人不知道...
  7. 怎么让图片居中php,怎么让CSS文件里图片居中
  8. Struct嵌套使用
  9. javascript写字技巧_关于 js的一些书写习惯 实用风格 小技巧
  10. 我转行程序员的那一年(二)
  11. ODAC安装配置与使用详解
  12. Verilog学习日志(2021.7.31)
  13. QML 语法(Syntax)
  14. 蓝牙耳机无法与计算机连接,电脑连接蓝牙耳机时无法连接
  15. bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
  16. Linux内存工具解析之RSS/VSS/USS/PSS区别于联系
  17. 间隔层设备和过程层简介
  18. 如何写一个vscode插件
  19. htmlunit 示例
  20. 恒烁M0+系列CX32L003单片机及其GPIO的操作

热门文章

  1. Linux服务器之间的文件同步(单向同步:rsync+inotify)
  2. CF1554B Cobb
  3. 计算机毕业论文Java项目源码下载基于javaweb的汽车租赁网|租车[包运行成功]
  4. Android微信iwxapi.registerApp崩溃
  5. 2021.3.8写写日记
  6. 我国企业信息安全现状---逻辑强隔离的市场潜力和达龙DLP技术的信息安全革命
  7. sortable.js 相关
  8. 计算机考试的准考证号组成
  9. 增长黑盒给你推荐10本书:学习增长,提升认知
  10. python中wraps是什么意思_python 理解functools.wraps