python itchat 爬取微信好友信息
「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 = 0
y = 0
imgs = 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 += 1
if x >= numLine:
x = 0
y += 1
newImg.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) + 1
elif f["Sex"] == 2: #女
sex["women"] = sex.get("women", 0) + 1
else: #未知
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/
欢迎关注微信号:春风十里不如认识你

python itchat 爬取微信好友信息的更多相关文章
- python 爬取微信好友列表和个性签名,绘制个性签名云图
python爬取微信好友列表和个性签名,绘制个性签名云图 1. 简要介绍 本次实验主要用到下面几个库 : 1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆 2)re(正则化)--- ...
- Python3 爬取微信好友基本信息,并进行数据清洗
Python3 爬取微信好友基本信息,并进行数据清洗 1,登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整的好友列表. 其中每个好友为一个字典 列表的第一项为本人的账号信息 ...
- 我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- Python爬取微信好友
前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 来源: 痴海 链接: https://mp.weixin.qq.com/ ...
- 简单的python爬虫--爬取Taobao淘女郎信息
最近在学Python的爬虫,顺便就练习了一下爬取淘宝上的淘女郎信息:手法简单,由于淘宝网站本上做了很多的防爬措施,应此效果不太好! 爬虫的入口:https://mm.taobao.com/json/r ...
- Python爬虫-爬取京东商品信息-按给定关键词
目的:按给定关键词爬取京东商品信息,并保存至mongodb. 字段:title.url.store.store_url.item_id.price.comments_count.comments 工具 ...
- 【Python还能干嘛】爬取微信好友头像完成马赛克拼图(千图成像)~
马赛克拼图 何谓马赛克拼图(千图成像),简单来说就是将若干小图片平凑成为一张大图,如下图路飞一样,如果放大看你会发现里面都是一些海贼王里面的图片. Our Tragets 爬取所有微信好友的头像
- python爬虫爬取汽车页面信息,并附带分析(静态爬虫)
环境: windows,python3.4 参考链接: https://blog.csdn.net/weixin_36604953/article/details/78156605 代码:(亲测可以运 ...
- python爬虫爬取全球机场信息
--2013年10月10日23:54:43 今天需要获取机场信息,发现一个网站有数据,用爬虫趴下来了所有数据: 目标网址:http://www.feeyo.com/airport_code.asp?p ...
随机推荐
- 使用 SonarQube 来分析 .NET Core 项目代码问题
0.介绍 Sonar 是一款开源的代码分析工具,可能有很多人已经用过,本篇文章主要是讲解如何在 Docker 里面安装 Sonar 并且用其来分析 .Net Core 项目. Sonar 是一个用于代 ...
- Linux(CentOS)下安装Elasticsearch5.0.0
一.ES5.0解压安装到Windows之后(可能)需要进行的设置: 1.如果不设置,直接运行elasticsearch.bat 文件 ,会报错: 2.解决方式 调节 conf/jvm.options ...
- 给iPhone手机安装*.ipa
首先手机连接电脑,打开 ITunes. 左上角点击文件,再点击添加到资料库. 找到你要安装的ipa点击选择打开 好了ipa已经添加进去后,你会看你你刚才添加进去的应用在列表内,点击左上角一个手机的图标 ...
- javaScript笔记详解(1)
javaScript基础详解 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 首先讲javaScript的摆放位置:<sc ...
- Django--缓存设置
Django缓存机制 一. 缓存介绍 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中 ...
- RocketMQ
http://rocketmq.apache.org/docs/quick-start/ 解压后添加启动脚本 nohup sh bin/mqnamesrv >> logs/namesrv. ...
- 全网最详细的Centos7系统里安装Openresty(图文详解)
不多说,直接上干货! 介绍: Nginx 采用一个 master 进程管理多个 worker 进程(master-worker)模式,基本的事件处理都在 woker 中,master 负责一些全局初始 ...
- 编码(2)从字节理解Unicode(UTF8/UTF16)
https://www.cnblogs.com/zizifn/p/4716712.html 从字节理解Unicode(UTF8/UTF16) 如果你不知道或者不了解什么是Unicode/UTF8/UT ...
- com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的 ...
- 不规范的json文档 转化成 java 对象的处理
最近练习爬取数据,遇到了json文档中属性名称没有用双引号的情况,内容如下: 标准的json文档,属性名称都是带双引号的 最后写了个方法,替换属性名字 为 两头追加双引号的属性名字, 特别要注意,防止 ...