[使用案例]python如何爬取微信好友信息?(上)

发布时间:2020-05-25 关注热度:°C

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

微信好友信息如何python爬取

  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')

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

 

版权声明:本文为IP海(iphai.cn)原创作品,未经许可,禁止转载!

Copyright © www.iphai.cn. All Rights Reserved. IP海 版权所有.
IP海仅提供中国内IP加速服务,无法跨境联网,用户应遵守《服务条款》内容,严禁用户使用IP海从事任何违法犯罪行为。
ICP备案鄂ICP备19030659号-3 公安备案鄂公网安备42100302000141号 计算机软件著作权证计算机软件著作权证 ICP/EDI许可证ICP/EDI许可证:鄂B2-20200106

微信扫一扫咨询