如何使用Python爬取微信好友信息?(上)

作者:IPIDEA

2022-09-23 15:23:08

      Python如何爬取微信好友的基本信息,清理数据?下面跟着IPIDEA让我们来看看如何实现带来的教程。    

如何使用Python爬取微信好友信息?(上).png  

      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)

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

*ipidea提供的服务必须在境外网络环境下使用

热门资讯