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

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

0、读取数据,搞懂数据

因为获取好友信息需要手机授权登录网页版,所以为了避免频繁扫码登录,我们在一次登录后把好友列表信息在本地持久化保存,以下是这段功能的代码:

import itchat
import pickle

itchat.login()  # 会自动弹出一个二维码,手机微信扫描授权网页版登录后方可爬取相关信息

my_friends = itchat.get_friends(update=True)[0:]    # 获取通讯录好友的信息,返回一个好友信息的字典

# 持久化保存数据,统计好友相关信息时无需再次扫码登录
with open('../data/my_friends.pickle', 'wb') as e:
    pickle.dump(my_friends, e)

这里保存的 my_friends 是好友列表,列表的元素是每个好友的信息,信息由字典表示,具体来说 my_friends = [ {好友1},{好友2},·····,{好友n} ],每一个好友字典的 key 如下表(给出了部分注解,还有一些没搞明白):

key 注解
MemberList 不明
Uin 不明
UserName 微信系统内的用户编码标识
NickName 好友昵称
HeadImgUrl 微信系统内的头像URL
ContactFlag 不明
MemberCount 不明
RemarkName 你给好友的备注名
HideInputBarFlag 不明
Sex 性别
Signature 个性签名
VerifyFlag 不明
OwnerUin 不明
PYInitial 昵称的简拼
PYQuanPin 昵称的全拼
RemarkPYInitial 备注名的简拼
RemarkPYQuanPin 备注名的全拼
StarFriend 是否星标好友
AppAccountFlag 不明
Statues 不明
AttrStatus 不明
Province 省份
City 城市
Alias 不明
SnsFlag 不明
UniFriend 不明
DisplayName 不明
ChatRoomId 不明
KeyWord 不明
EncryChatRoomId 不明
IsOwner 不明

搞清楚了返回结果的数据结构,接下来的事情就很简单了。

1、好友的性别统计

我将统计性别的代码统一在一个 statistic_friends_dict 函数中:

def statistic_friends_sex(friends_dict):
    """
    该函数功能为实现 friends_dict 中性别统计
    :param friends_dict: itchat.get_friends()返回的好友字典
    :return: 男、女、性别未填写的人数 [#male, #female, #unknown]
    """
    result = [0, 0, 0]
    for friend in friends_dict[
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值