python 爬取微信好友列表和个性签名,绘制个性签名云图
python爬取微信好友列表和个性签名,绘制个性签名云图
1. 简要介绍
本次实验主要用到下面几个库 :
1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆
2)re(正则化)---由于微信好友个性签名含有中英文,本次只提取中文,需要使用re模块去除其他无关字符
3)wordcloud(云图)---使用该模块生成中文云图
4)jieba(中文分词)--- 号称最好的中文分词工具
2. 安装库
pip install re
pip install jieba
pip install itchat
pip install wordcloud
3. 实验代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2018/1/19 14:37
# @Author : Z.C.Wang
# @Email :
# @File : spider_wechat.py
# @Software: PyCharm Community Edition
"""
Description :
"""
import re
import jieba
import itchat
from pandas import DataFrame
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
import pickle def get_var(var):
variable = []
for i in friends:
value = i[var]
variable.append(value)
return variable def list2str(wordlist):
string = ' '
for word in wordlist:
string = string + ' ' + word
return string if __name__ == '__main__':
itchat.login()
friends = itchat.get_friends(update=True)
male = female = other = 0
for i in friends[1:]:
sex = i['Sex']
if sex == 1: male += 1
elif sex == 2: female += 1
else: other += 1
total = len(friends[1:])
# print('男性好友:%.2f%%' % float(male/total*100))
# print('女性好友:%.2f%%' % float(female/total*100))
# print('不明性别好友:%.2f%%' % float(other/total*100))
Nickname = get_var('NickName')
Sex = get_var('Sex')
Province = get_var('Province')
print(Province)
City = get_var('City')
Signature = get_var('Signature')
data = {'Nickname': Nickname, 'Sex': Sex, 'Province': Province,
'City': City, 'Signature': Signature}
pickle.dump(data, open('data.txt', 'wb'))
frame = DataFrame(data)
frame.to_csv('info.csv', index=True, encoding='utf-8-sig') siglist = []
for i in friends:
signature = i['Signature'].strip().replace('spam', '').replace('class', '').replace('emoji', '')
# rep = re.compile('1f\d+\w*|[<>/=]')
rep = re.compile("[^\u4e00-\u9fa5^]")
signature = rep.sub('', signature)
siglist.append(signature)
text = ''.join(siglist)
wordlist = jieba.cut(text, cut_all=True)
wordlist = list(wordlist)
String = list2str(wordlist) coloring = np.array(Image.open('alice.png'))
my_wordcloud = WordCloud(background_color='white', max_words=2000,
mask=coloring, max_font_size=55, random_state=42,
scale=2, font_path=r'C:\Windows\Fonts\simhei.ttf').generate(String)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()
4. 实验结果


python 爬取微信好友列表和个性签名,绘制个性签名云图的更多相关文章
- 我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- Python爬取微信好友
前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 来源: 痴海 链接: https://mp.weixin.qq.com/ ...
- python itchat 爬取微信好友信息
原文链接:https://mp.weixin.qq.com/s/4EXgR4GkriTnAzVxluJxmg 「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚 ...
- Python3 爬取微信好友基本信息,并进行数据清洗
Python3 爬取微信好友基本信息,并进行数据清洗 1,登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整的好友列表. 其中每个好友为一个字典 列表的第一项为本人的账号信息 ...
- python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- python爬取微信公众号
爬取策略 1.需要安装python selenium模块包,通过selenium中的webdriver驱动浏览器获取Cookie的方法.来达到登录的效果 pip3 install selenium c ...
- Python:爬取乌云厂商列表,使用BeautifulSoup解析
在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...
- 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)
前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...
随机推荐
- ionic2 在执行ionic serve后报 build dev failed: Cannot set property 'fileSystem' of null
ionic2 真是烦人,因为环境依赖的问题还有网络的问题,不知砸的,项目放一段事件不运行就会出问题. 我一开始是 用 cnpm install安装的依赖,其中也报了错, 然后执行 ionic serv ...
- ubuntu下的root的创建进入与退出
创建: 在终端中输入:sudo passwd rootEnter new UNIX password: (在这输入你的密码)Retype new UNIX password: (确定你输入的密码)pa ...
- 【Dairy】2016.11.5
橘子洲一游
- [Pa2013]Iloczyn
https://www.zybuluo.com/ysner/note/1300802 题面 给定正整数\(n\)和\(k\),问能否将\(n\)分解为\(k\)个不同正整数的乘积. \(n\leq10 ...
- Linux day01(二)虚拟机快照和克隆的用法介绍
一:快照 优点:运行虚拟机后不用担心系统会被弄崩溃了,点击快照会立即恢复到初始状态 缺点:回滚会带来数据的丢失,所以要考虑数据恢复的成本和找回数据时进行操作的成本 1. 在导航栏中找虚拟机快照的小图标 ...
- [Qt Creator 快速入门] 第2章 Qt程序编译和源码详解
一.编写 Hello World Gui程序 Hello World程序就是让应用程序显示"Hello World"字符串.这是最简单的应用,但却包含了一个应用程序的基本要素,所以 ...
- java大数轻松过
import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(S ...
- UE编辑器编译和运行java设置
工具原料: UE编辑器 1点击“高级”,再点击“工具配置”. 2点击“插入”,在“菜单项”名称上输入“编译java程序”,在“命令行”里输入“javac %n%e”,在工作目录上填“%p”. 3切换到 ...
- Ajax学习笔记之一----------第一个Ajax Demo[转载]
原文地址: http://www.cnblogs.com/pjx412/archive/2011/05/04/2037014.html 一.核心推动力:XMLHttpRequest对象XMLHttpR ...
- 从 C++ 到 Objective-C 的快速指南
简介 当我开始为iOS写代码的时候,我意识到,作为一个C++开发者,我必须花费更多的时间来弄清楚Objective-C中怪异的东西.这就是一个帮助C++专家的快速指南,能够使他们快速的掌握Apple的 ...