python 爬取微信朋友圈的一些信息

一、工具:使用python 3.6 自带的编辑器IDEL,在命令行可以正常运行。
二、此程序用到的一些库和包:
(1)itchat:itchat是一个开源的微信个人号接口,可以登录微信账号;点击打开链接(此链接为关于itchat用法的文档)
(2)jieba分词使用手册
(3)pyecharts 包基本用法点击打开链接
(4)numpy:numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
(5pandas用法 点击打开链接
三、此程序实现的功能:
(1)爬取朋友圈的男女比例
(2)圈内朋友所在省份
(3)朋友圈的个性签名

代码如下:

# coding:utf-8
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]  #爬取好友的相关信息,返回一个friends文件

#自己微信好友的男女比例
male=female=other=0
#friend[0]是自己的信息,从friend[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('male: %d' % int(male))
print('female: %d' % int(female))
print('other: %d' % int(other))
print('male:  %.2f%%' % (float(male)/total*100))
print('female: %.2f%%' % (float(female)/total*100))
print('other: %.2f%%' % (float(other)/total*100))

#绘制性别饼图
from pyecharts import Pie
attr=['male','female','other']
vl=[123,125,23]
pie=Pie("性别比例")
pie.add('',attr,vl,is_label_show=True)
pie.render(r"D:\WorkSpace\Python3.6.0\Sex.html") #默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用浏览器打开。

#定义一个函数把好友昵称、省份、城市、性别、签名等数据都爬下来,存到数据框
#首先定义一个函数,用来爬取各个变量
def get_var(var):
      variable=[]
      for i in friends:
            value=i[var]
            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')

from pandas import DataFrame
data={'NickName':NickName,'Sex':Sex,'Province':Province,'City':City,'Signature':Signature}
frame=DataFrame(data)
frame.to_csv('data2.csv',index=True)

import csv
with open('data2.csv','r',encoding = "utf-8") as myFile:
      reader=csv.reader(myFile)
      for row in reader:
            print(row)
           
from pyecharts import Bar
Provinces=[]
for f in friends:
      Province=f.Province
      Provinces.append(Province)
      
a={}
for i in Provinces:
       a[i]=Provinces.count(i)

b=sorted(a.items(),key=lambda item:item[1])

attrs=[]
values=[]
j=0
while j
四、结果图如下:
python 爬取微信朋友圈的一些信息_第1张图片
python 爬取微信朋友圈的一些信息_第2张图片
个性签名:
python 爬取微信朋友圈的一些信息_第3张图片

你可能感兴趣的:(python 爬取微信朋友圈的一些信息)