Py学习  »  Python

Python 助你解读微信好友圈

朝阳35处 • 6 年前 • 368 次点击  

    随着社交网络的飞速普及,微信已然成为我们的生活必需品,尽管大家吐槽声不断,但我们确实很难离开它了。每个人的微信好友没有上千也有几百,除了聊天和传输文件,还有哪些好友的小秘密可以挖一挖呢?



想要对微信好友做分析,第一步就是要拿到数据,即好友信息。如何获取?使用python的itchat,很轻松就可以搞定:

import itchat

itchat.autulogin()

itchat.get_friends()

接下来,我们就来看看itchat都能做什么:



获取好友注册地区


通过  friends.Province 方法可以获取好友的注册地区,通过对不同地区好友的数量进行统计,使用 echarts-map 即可画出如下好友微信区域分布图,点越亮,说明该地区的好友越多:


上图是作者的微信好友分布图。作为一个在东北上学,在北京上班的河北姑娘,目测图像的大致分布与事实还是比较相符的。不过,明显可以看出来山东地区闪烁着耀眼的光芒,看来作者的山东朋友不少呢,四不四可以考虑学个山东话当第三外语了~



获取好友微信签名


通过 friends[i]['Signature'] 方法,可以获取好友签名。建议尝试一下,你会有意想不到的收获,哈哈。

根据获取的签名信息,作者尝试做了情感分析,看看大家最近的心态如何:将获取的签名暂存在一个list里,再使用snownlp对每条签名进行评估snownlp会对每个签名进行打分(0-1),分值的高低代表了情感的类型消极还是积极以下是小编截取的前十条签名信息,sentiment即为打分结果:


将上述结果用 echarts-lines 展示出来,结果是这个样子的:

看来大多数小伙伴的签名得分都高于0.5,还是非常积极向上的。当然,你还可以多定义一个标签,看看sentiment低于0.5的是谁,平时可以多关心他一下(偷笑)。



获取好友头像


通过itchat的 get_head_img() 方法可以获取微信好友的全部头像,作者将大家的头像攒成了一张图片,就像这样

有木有觉得专克密集恐惧症患者啊(此处应有坏笑表情...)。至于拿这些图片来干点什么,比如按颜色给图片排个序?又或者看看上期笔者的文章《AI涂色小试,线稿也智能》,给好友头像重新涂个色?这就需要大家大开脑洞了,如果有什么好的idea,欢迎留言讨论。脑洞还是要有的,万一实现了呢~


除了获取好友信息,itchat的send方法也是一个比较常用的方法,通过send方法,你可以开发自己的微信陪聊机器人,也可以让它帮助你自动获所需信息,做你得力的小助手。



陪聊机器人


itchat的send 方法可以自动回复好友信息,只要你定义了回复内容,它就可以帮你自动回复了,就像这样:

        那么这些看起来有点机智的回复难道全部靠手写?当然不是调用图灵机器人的API就可以了:

        def get_response(msg):

                apiUrl = 'http://www.tuling123.com/openapi/api'

                data = {

                        'key': KEY,

                        'info': msg,

                        'userid': 'pth-robot',

                }

                r = requests.post(apiUrl, data=data).json()

                return r.get('text')

将发送的信息(msg)作为请求参数发送给API接口,图灵机器人会根据msg配最佳回复。接下来使用itchat的send方法返回给好友。不过,陪伴朋友和家人的时间是幸福和宝贵的,不是机器人可以替代的呢。



微信小助手


同样是调用send方法,可以通过设定关键词,让python执行特定的程序并返回结果。以获取天气信息为例,你需要写一个爬虫程序,获取当天的天气信息,然后根据微信端传送的关键词,提取某地区的天气数据输出:

类似的功能还有很多,比如,可以让它帮你获取一下今天的微博头条或者车票信息等等。上述内容在技术实现上并没有太大的难度,关于itchat接口,百度一下,你就知道。至于echarts,则是来源于百度的一款可视化分析产品,包含了几乎所有常见的可视化图形示例,同样非常简单易用。另外上文提到的snownpl是一个用来做自然语言处理的工具,目测效果还不错,感兴趣的小伙伴可以自己试试看~

- END -

        



修改于2018-03-17 20:39

微信扫一扫
关注该公众号



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/txtjtP8OOD
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/9086
 
368 次点击