Python3如何爬取微信好友基本信息,并且进行数据清洗?下面跟着IP海带来的教程,我们一起看看具体的操作要怎么实现。

1、登录获取好友基础信息:

好友的获取方法为get_friends,将会返回完整的好友列表。

其中每个好友为一个字典

列表的第一项为本人的账号信息

传入update键为True将可以更新好友列表并返回

'''

微信:

Date:20180918

Author:lizm

Description:爬取微信好友、公众号、群聊基本信息,并进行数据清洗

'''

import itchat

from pandas import DataFrame

import pandas as pd

import re

#1、登录(每次登录都要扫二维码)

itchat.login()

#登录(只需要扫码一次,第二次运行手机微信会弹出确认框)

#itchat.auto_login(hotReload=True)

#爬取自己好友相关信息, 返回一个json文件

friends = itchat.get_friends(update=True)[0:]

#print(friends)

2、统计性别并图形展示(pyecharts)

#2、统计性别

#初始化计数器

male = female = other = 0

#friends[0]是自己的信息,所以要从friends[1]开始

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) + " " +

"女性好友: %.2f%%" % (float(female) / total * 100) + " " +

"不明性别好友: %.2f%%" % (float(other) / total * 100))

#pyecharts图形

from pyecharts import Bar

bar =Bar("性别比例图", "微信好友")

bar.add("性别", ["男", "女", "未知"], [male, female, other])

bar.show_config()

bar.render()

3、将基本信息保存到csv

#3、将基本信息保存到csv

def filter_emoji(desstr,restr=''):

#过滤表情

try:

co = re.compile(u'[U00010000-U0010ffff]')

except re.error:

co = re.compile(u'[uD800-uDBFF][uDC00-uDFFF]')

return co.sub(restr, desstr)

#定义一个函数,用来爬取各个变量

import emoji

def get_var(var):

variable = []

for friend in friends:

value = friend[var]

if isinstance(value,str):

value = value.strip()

#value = emoji.demojize(value)

value = filter_emoji(value,'')

rep = re.compile("1fd+w*|[<>/=]")

value = rep.sub("", value)

rep1 = re.compile("[s+.!/_,$%^*(+"']+|[+——!,。?、~@#¥%……&*()]+")

value = rep1.sub('',value)

print("爬取数据[%s]>>>>:%s" %(var,value))

else:

pass

variable.append(value)

return variable

#调用函数得到各变量,并把数据存到csv文件中,保存到桌面

NickName = get_var("NickName")

Sex = get_var('Sex')

Province = get_var('Province')

City = get_var('City')

Signature = get_var('Signature')

data = {'NickName': NickName, 'Sex': Sex, 'Province': Province,

'City': City, 'Signature': Signature}

frame = DataFrame(data)

#windows下运行,需要转码,系统默认是gbk,需要手动设置;注意:utf-8还是乱码,得设置为utf-8-sig

frame.to_csv('data.csv', index=True,encoding='utf_8_sig')

进行到这里,我们的流程就已经完成一半了,还有两个关键步骤,我们在下一篇文章继续分析。

python爬取微信聊天记录数据_[使用案例]python如何爬取微信好友信息?(上)相关推荐

  1. python爬取大众点评数据_利用Node.js制作爬取大众点评的爬虫

    前言 Node.js天生支持并发,但是对于习惯了顺序编程的人,一开始会对Node.js不适应,比如,变量作用域是函数块式的(与C.Java不一样):for循环体({})内引用i的值实际上是循环结束之后 ...

  2. python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?

    1.两个连续的print()函数为什么在输出时内容会分行显示? 解:print()中有两个默认参数sep和end,其中sep是代替分隔符,end是代替末尾的换行符,默认使用','代替空格,且默认末尾加 ...

  3. python爬取网页公开数据_如何用Python爬取网页数据

    使用Python爬取网页数据的方法: 一.利用webbrowser.open()打开一个网站:>>> import webbrowser >>> webbrowse ...

  4. python能爬取网站后台数据_如何利用Python爬取网站数据?

    1.基本方法 其实用python爬取网页很简单,只有简单的几句话 这样就可以获得到页面的内容.接下来再用正则匹配去匹配所需要的内容就行了.但是,真正要做起来,就会有各种各样的细节问题. 2.登录 这是 ...

  5. python爬取b站数据_如果利用Python爬取B站上千万数据?B站直播都是大屌萌妹吗?...

    粉丝独白 说起热门的B站相信很多喜欢玩动漫的,看最有创意的Up主的同学一定非常熟悉.我突发奇想学Python这么久了,为啥不用Python爬取B站中我关注的人,已经关注的人他们关注的人,看看全站里面热 ...

  6. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片

    本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...

  7. python 抓取解析接口数据_[干货]用python抓取摩拜单车API数据并做可视化分析(源码)...

    原标题:[干货]用python抓取摩拜单车API数据并做可视化分析(源码) 在APP中能看到很多单车,但走到那里的时候,才发现车并不在那里.有些车不知道藏到了哪里:有些车或许是在高楼的后面,由于有GP ...

  8. linux中python如何调用matlab的数据_?如何在Python中加入多个数据帧?

    全文共2235字,预计学习时长7分钟 来源:Pexels 初学Python编程的人,面临的是各种未知的挑战. 下面是一个几乎让所有更有抱负的数据科学家都感到意外的场景: 你正在处理一个从多个源收集数据 ...

  9. python连接mysql查询一个数据_使用Connector / Python连接MySQL/查询数据

    使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...

最新文章

  1. github 项目绑定自己的域名
  2. Java基础知识之泛型全接触
  3. Linux USB 驱动开发(一)—— USB设备基础概念
  4. 建站之前做好规划方案会为网站带来意外之喜
  5. Alex: 2018年对混合现实MR的展望
  6. IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
  7. 二叉树题目----6 二叉树的最近公共祖先 AND 二叉树搜索树转换成排序双向链表
  8. java 写入xml文件_java读写xml文件
  9. hdu 3917 Road constructions 最大权闭合子图
  10. 安装php服务图解,图文详解安装PHP运行环境
  11. 基于Python3爬取百度百科内容(可自己输入关键字)
  12. 《SRE:Google运维解密》读后有感
  13. 《保卫萝卜》分析续——地图构成
  14. 如何完美解决catia出现-运行异常,单击“确定终止”-问题
  15. 计算机组成与系统结构——MIPS多周期处理器-7指令
  16. 关于FileSystemWatcher类
  17. “mvn -version ‘mvn‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件“
  18. 【信息汇总】重庆理工大学计算机考研
  19. finereport实现数据替换和重复填报提示
  20. (产品贴)移动护理平台

热门文章

  1. ACCESS表达式中的叹号“!”和点号“.”的区别
  2. Linux(二十七):在Linux系统上安装Git
  3. Java servlet生命周期
  4. 智能外呼系统助力全行业销售自动化
  5. 华为--OSPF抓包实验分析邻接关系的七个状态,单区域ospf配置
  6. qq号码凶吉 php,QQ号码测吉凶
  7. amd 2600 黑苹果 mojave
  8. MySQL:递减/递减更新一列字段值
  9. 出海、上市,分众传媒还能再造一个“分众”吗?
  10. 在vue中使用element-ui 里面的按钮点击后显示加载中,防止重复提交