itchat安装

对微信的控制可以使用itchat来实现,我们找到itchart的官网下查看相关帮助:http://itchat.readthedocs.io/zh/latest/

我这里使用的是Python2.7,所以直接按照说明pip 安装itchat即可

1.实现给文件助手发消息

安装itchat后,使用如下的代码,即可给文件助手发一条消息,登陆时同样使用扫码登陆

import itchatitchat.auto_login()itchat.send('Hello, filehelper', toUserName='filehelper')

自回复消息

按照帮助说明,使用如下的示例代码可以实现消息的自动回复

import itchat@itchat.msg_register(itchat.content.TEXT)def text_reply(msg):    return msg.textitchat.auto_login()itchat.run()

用老婆大人的号测试了一下,可以实现信息的发送和直接回复需要注意的是,使用同一个微信给自己发消息不起作用

这里为了方便多次运行,可以设置hotReload=True 变量,从而记录登陆的账号

itchat.auto_login(hotReload=True)

2.微信聊天机器人制作

官网教程还有微信机器人,所以照着教程做了一遍。试用后,发现图灵机器人的智商捉鸡,而且比较凶悍

# -*- coding: utf-8 -*-import requestsimport itchatKEY = '71f28bf79c820df10d39b4074345ef8c'def get_response(msg):    # 这里我们就像在“3. 实现最简单的与图灵机器人的交互”中做的一样    # 构造了要发送给服务器的数据    apiUrl = 'http://www.tuling123.com/openapi/api'    data = {        'key'    : KEY,        'info'   : msg,        'userid' : 'wechat-robot',    }    try:        r = requests.post(apiUrl, data=data).json()        # 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异常        return r.get('text')    # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常    # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return    except:        # 将会返回一个None        return# 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法@itchat.msg_register(itchat.content.TEXT)def tuling_reply(msg):    # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复    defaultReply = 'I received: ' + msg['Text']    # 如果图灵Key出现问题,那么reply将会是None    reply = get_response(msg['Text'])    # a or b的意思是,如果a有内容,那么返回a,否则返回b    # 有内容一般就是指非空或者非None,你可以用`if a: print('True')`来测试    return reply or defaultReply# 为了让实验过程更加方便(修改程序不用多次扫码),我们使用热启动itchat.auto_login(hotReload=True)itchat.run()

下面是我的实际测试截图

3.爬取一个好友

机器人是官网的教程,微信文章中使用的是对好友数据分布的统计,所以我先尝试实现爬取一个好友的功能

3.1 获取一个好友信息

# -*- coding: utf-8 -*-import itchatitchat.auto_login(hotReload=True)#爬取自己好友相关信息, 返回一个json文件friends = itchat.search_friends(name='Elton')print friends

可以看到拿到的数据是一个List

3.2 打印数据到文件中

通过open函数,可以将获取到的数据写入到txt中去

# -*- coding: utf-8 -*-import itchatitchat.auto_login(hotReload=True)#爬取自己好友相关信息, 返回一个json文件friends = itchat.search_friends(name='Elton')f = open('out.txt', 'w')print >> f, friendsf.close()

3.3 安装画图软件

为了把统计出来的柱状图绘制出来,安装matplotlib的库

至此,基本上准备条件已经完成

4. 爬取所有好友数据

爬取好友的功能如下,通过将爬取的数据存储到字典中,对性别做统计处理,可以获取总人数和性别分类的数量

def parse_friedns():    text = dict()    friedns = itchat.get_friends(update=True)[0:]    #(friedns)    male = 'male'    female = 'female'    other = 'other'    for i in friedns[1:]:        sex = i['Sex']        if sex == 1:            text[male] = text.get(male, 0) + 1        elif sex == 2:            text[female] = text.get(female, 0) + 1        else:            text[other] = text.get(other, 0) + 1    total = len(friedns[1:])    print('好友数量:%.2f'%total)    print('男性好友: %.2f%%' % (float(text[male]) / total * 100) + '\n' +          '女性好友: %.2f%%' % (float(text[female]) / total * 100) + '\n' +          '不明性别好友: %.2f%%' % (float(text[other]) / total * 100))    draw_plot(text,u'朋友圈男女比例_')

使用了plt函数来绘制曲线

# 绘制柱状图def draw_plot(datas,tag=''):    for key in datas.keys():        plt.bar(key, datas[key])    plt.legend()    plt.xlabel('sex')    plt.ylabel('rate')    plt.title('Gender of Alfred's friends')    if tag=='':        plt.savefig(OUTPUT+USER_NAME+'_'+u'柱状图.png')        else:        plt.savefig(OUTPUT+USER_NAME+'_'+tag+u'柱状图.png')

运行程序,爬取所有的好友数据,发现我好友一共515位,其中男性的好友占据了73%,男女比例差异有点大….

好友个性签名词云

通过使用get_friends可以爬取微信的好朋友数据,存储在’signature.txt’文件中

def parse_signature():    siglist = []    SIGNATURE_PATH='signature.txt'    friedns = itchat.get_friends(update=True)[1:]    for i in friedns:        signature = i['Signature'].strip().replace('span', '').replace('class', '').replace('emoji', '')        rep = re.compile('1f\d+\w*|[<>/=]')        signature = rep.sub('', signature)        siglist.append(signature)    text = ''.join(siglist)    with io.open(SIGNATURE_PATH, 'w', encoding='utf-8') as f:        wordlist = jieba.cut(text, cut_all=True)        word_space_split = ' '.join(wordlist)        f.write(word_space_split)        f.close()    draw_wordcloud(SIGNATURE_PATH,tag=u'朋友圈签名')

通过对文件的解析,可以将词云绘制出来

#绘制词云def draw_wordcloud(path,tag=''):    f = open(path,'r').read()    cut_text=''.join(jieba.cut(f))    coloring = np.array(Image.open('.\\Pic\\wechat.jpg'))    wordcloud = WordCloud(font_path='./font/simhei.ttf',background_color='white',max_words=2000,mask=coloring, scale=2).generate(cut_text)    image_colors = ImageColorGenerator(coloring)    #plt.imshow(wordcloud.recolor(color_func=image_colors))    plt.imshow(wordcloud)    plt.axis('off')    if tag=='':        wordcloud.to_file(OUTPUT+USER_NAME+'_'+u'词云.png')      else:        wordcloud.to_file(OUTPUT+USER_NAME+'_'+tag+u'词云.png')

下图是解析出来的词云,可以看到朋友圈的人大部分还是以自己努力生活为目标~

同理,我也爬取了一下朋友圈的城市分布,发现大部分的人都在北京,还有上过学的哈尔滨,南京的同事~

python爬取微信好友教程_Python爬取微信好友相关推荐

  1. python爬取微博图片教程_Python爬取微博实例分析

    引言 利用Ajax分析微博并爬取其内容如微博内容,点赞数,转发数,评论数等. 分析 打开陈一发微博网站:https://m.weibo.cn/p/1005051054009064,并同时打开开发者工具 ...

  2. python微信点赞脚本_Python爬取微信公众号评论、点赞等相关信息

    微信公众号爬虫方案分析(爬取文艺相处公众号) 之前考虑过使用搜狗微信来爬取微信公众号信息,不过搜狗提供的数据有诸多弊端,比如文章链接是临时的,文章没有阅读量等指标,所以考虑通过手机客户端利用 Pyth ...

  3. python爬取微信公众号_Python爬取微信公众号(中间人代理法)

    1.环境:ubuntu16.04 + redis + mysql + python3.5 + anyproxy + android + pm2 + npm + node 一台爬虫服,python3环境 ...

  4. python爬取公众号文章_python爬取微信公众号历史文章

    前几天,朋友有一个爬取某些指定微信公众号的历史文章的需求,刚好自己闲的没事,也就试了一试.不算完美解决问题了吧,但是自己也无能为力了,毕竟腾讯那么牛,斗不过斗不过. 一.思路 看了一些别人的文章,综合 ...

  5. python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...

    原标题:Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书! 作者 | Yura 责编 | 胡巍巍 高尔基这话有没有道理我不知道, 咱也不敢问, 主要是现在也问不了. 那对我来说,读 ...

  6. python爬取虎扑评论_Python爬取NBA虎扑球员数据

    虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...

  7. python知乎爬虫收藏夹_Python爬取知乎问题收藏夹 爬虫入门

    简介 知乎的网站是比较好爬的,没有复杂的反爬手段,适合初学爬虫的人作为练习 因为刚刚入门python,所以只是先把知乎上热门问题的一些主要信息保存到数据库中,待以后使用这些信息进行数据分析,爬取的网页 ...

  8. python百度贴吧 发帖时间_python爬取贴吧帖子

    一.介绍 我们常遇到一些很长的贴吧连载帖子想存到本地再看 此文就是运用python爬取指定百度贴吧的帖子并存到本地满足需求 环境:python2.7 目标网页:[长篇连载]剑网3的正史和野史--从头开 ...

  9. python爬取音乐并保存_Python爬取网易云音乐上评论火爆的歌曲

    前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行 ...

  10. python爬取b站用户_python爬取b站排行榜

    爬取b站排行榜并存到mysql中 目的 b站是我平时看得最多的一个网站,最近接到了一个爬虫的课设.首先要选择一个网站,并对其进行爬取,最后将该网站的数据存储并使其可视化. 网站的结构 目标网站:bil ...

最新文章

  1. 生成邮件图片签名的链接Gmail、hotmail 等... ...
  2. 对多个button触发enter操作,执行不同的操作
  3. 二十六、深入Node.js中的文件系统fs模块
  4. java-多线程操作全(Thread)-Timer简单使用
  5. Oracle毙掉JavaOne
  6. CentOS系统使用yum安装配置MariaDB数据库
  7. 遗传算法TSP问题举例
  8. linux容器 mac vlan,【Docker】macvlan网络模式下容器与宿主机互通
  9. bom mysql表,如何输出bomCAD表格
  10. 属性值第二个字符是大写引发的血案Warning:(X,X) java: Unmapped target property: “vCpu“.
  11. taro 的项目结构_自定义 Taro UI 组件的边框样式(hairline mixin)《 电商小程序案例:页面结构 》...
  12. 三维地图之cesium入门使用
  13. 2006德国世界杯完全赛程表
  14. termux—手机远程连接服务器教程
  15. 这家公司,打造电竞三冠王SKT,无视法律,韩国总统还得给他赔笑脸
  16. 好用的企业微信scrm系统有哪些?
  17. iOS开发——BAT网易笔试面试题参考答案
  18. 创建一个微信小程序——如何注册账号,安装微信开发者工具,创建一个小程序(详细步骤版)
  19. GMail 波澜不惊
  20. python爬取古诗文网站诗文一栏的所有诗词

热门文章

  1. 基尼系数,excel计算方法
  2. Word插入参考文献
  3. 新手兼职也能月入5000的副业项目,几乎零门槛
  4. Ubuntu18.04创建快捷方式
  5. 7-2 前序序列创建二叉树
  6. oracle 导入 imp-00008,imp导入文件时报大量的imp-0008错误
  7. matlab 函数中引用文件,Matlab如何调用其他m文件中的函数
  8. ResNet再进化!重新思考ResNet:采用高阶方案的改进堆叠策略
  9. VBlog 的代码结构, 使用 element, vant 组件开发的纯前端博客
  10. 2003 r2 远程管理html,掌握Win Server 2008的WinRM远程管理