python爬取微信好友教程_Python爬取微信好友
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爬取微信好友相关推荐
- python爬取微博图片教程_Python爬取微博实例分析
引言 利用Ajax分析微博并爬取其内容如微博内容,点赞数,转发数,评论数等. 分析 打开陈一发微博网站:https://m.weibo.cn/p/1005051054009064,并同时打开开发者工具 ...
- python微信点赞脚本_Python爬取微信公众号评论、点赞等相关信息
微信公众号爬虫方案分析(爬取文艺相处公众号) 之前考虑过使用搜狗微信来爬取微信公众号信息,不过搜狗提供的数据有诸多弊端,比如文章链接是临时的,文章没有阅读量等指标,所以考虑通过手机客户端利用 Pyth ...
- python爬取微信公众号_Python爬取微信公众号(中间人代理法)
1.环境:ubuntu16.04 + redis + mysql + python3.5 + anyproxy + android + pm2 + npm + node 一台爬虫服,python3环境 ...
- python爬取公众号文章_python爬取微信公众号历史文章
前几天,朋友有一个爬取某些指定微信公众号的历史文章的需求,刚好自己闲的没事,也就试了一试.不算完美解决问题了吧,但是自己也无能为力了,毕竟腾讯那么牛,斗不过斗不过. 一.思路 看了一些别人的文章,综合 ...
- python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
原标题:Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书! 作者 | Yura 责编 | 胡巍巍 高尔基这话有没有道理我不知道, 咱也不敢问, 主要是现在也问不了. 那对我来说,读 ...
- python爬取虎扑评论_Python爬取NBA虎扑球员数据
虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...
- python知乎爬虫收藏夹_Python爬取知乎问题收藏夹 爬虫入门
简介 知乎的网站是比较好爬的,没有复杂的反爬手段,适合初学爬虫的人作为练习 因为刚刚入门python,所以只是先把知乎上热门问题的一些主要信息保存到数据库中,待以后使用这些信息进行数据分析,爬取的网页 ...
- python百度贴吧 发帖时间_python爬取贴吧帖子
一.介绍 我们常遇到一些很长的贴吧连载帖子想存到本地再看 此文就是运用python爬取指定百度贴吧的帖子并存到本地满足需求 环境:python2.7 目标网页:[长篇连载]剑网3的正史和野史--从头开 ...
- python爬取音乐并保存_Python爬取网易云音乐上评论火爆的歌曲
前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行 ...
- python爬取b站用户_python爬取b站排行榜
爬取b站排行榜并存到mysql中 目的 b站是我平时看得最多的一个网站,最近接到了一个爬虫的课设.首先要选择一个网站,并对其进行爬取,最后将该网站的数据存储并使其可视化. 网站的结构 目标网站:bil ...
最新文章
- 生成邮件图片签名的链接Gmail、hotmail 等... ...
- 对多个button触发enter操作,执行不同的操作
- 二十六、深入Node.js中的文件系统fs模块
- java-多线程操作全(Thread)-Timer简单使用
- Oracle毙掉JavaOne
- CentOS系统使用yum安装配置MariaDB数据库
- 遗传算法TSP问题举例
- linux容器 mac vlan,【Docker】macvlan网络模式下容器与宿主机互通
- bom mysql表,如何输出bomCAD表格
- 属性值第二个字符是大写引发的血案Warning:(X,X) java: Unmapped target property: “vCpu“.
- taro 的项目结构_自定义 Taro UI 组件的边框样式(hairline mixin)《 电商小程序案例:页面结构 》...
- 三维地图之cesium入门使用
- 2006德国世界杯完全赛程表
- termux—手机远程连接服务器教程
- 这家公司,打造电竞三冠王SKT,无视法律,韩国总统还得给他赔笑脸
- 好用的企业微信scrm系统有哪些?
- iOS开发——BAT网易笔试面试题参考答案
- 创建一个微信小程序——如何注册账号,安装微信开发者工具,创建一个小程序(详细步骤版)
- GMail 波澜不惊
- python爬取古诗文网站诗文一栏的所有诗词
热门文章
- 基尼系数,excel计算方法
- Word插入参考文献
- 新手兼职也能月入5000的副业项目,几乎零门槛
- Ubuntu18.04创建快捷方式
- 7-2 前序序列创建二叉树
- oracle 导入 imp-00008,imp导入文件时报大量的imp-0008错误
- matlab 函数中引用文件,Matlab如何调用其他m文件中的函数
- ResNet再进化!重新思考ResNet:采用高阶方案的改进堆叠策略
- VBlog 的代码结构, 使用 element, vant 组件开发的纯前端博客
- 2003 r2 远程管理html,掌握Win Server 2008的WinRM远程管理