用itchat爬取朋友圈好友資訊

2021-08-03 07:47:39 字數 3962 閱讀 8436

import itchat

import numpy as np

import pandas as pd

from collections import defaultdict

import re

import jieba

import os

import matplotlib.pyplot as plt

from wordcloud import wordcloud, imagecolorgenerator

import pil.image as image

itchat.login()
friends = itchat.get_friends(update=true)
friend[0]是自己,下面為每乙個人建立乙個資料夾存放分析的結果。

nickname = friends[0].nickname #獲取自己的暱稱

os.mkdir(nickname) #為自己建立乙個資料夾

file = '\%s'

%nickname

#剛剛建立的那個資料夾的相對路徑

cp = os.getcwd() #當前路徑

path = os.path.join(cp+file) #剛剛建立的那個資料夾的絕對路徑

os.chdir(path) #切換路徑

number_of_friends =len(friends)
pandas可以把據處理成 dataframe,這極大方便了後續分析。

df_friends =pd.dataframe(friends)
男性為1;女性為2;未知為0;

自定義乙個計數函式:

def

get_count

(sequence):

counts = defaultdict(int) #初始化乙個字典

for x in ***:

counts[x] += 1

return counts

獲取性別資訊:

*** = df_friends.***

***_count = get_count(*** )

pandas為series提供了乙個value_counts()方法,可以更方便統計各項出現的次數:

***_count = ***.value_counts() #defaultdict(int, )
畫圖:

province_count = province_count[province_count.index!=''] #有一些好友地理資訊為空,過濾掉這一部分人。

我的好於基本上來自北京和四川,這是顯然的四川人在北京讀書。

再來看city

city = df_friends.city #[(df_friends.province=='北京') | (df_friends.province=='四川')]

city_count = city.value_counts()

city_count = city_count[city_count.index

!='']

file_name_all = nickname+'_basic_inf.txt' 

write_file = open(file_name_all,'w')

write_file.write('你共有%d個好友,其中有%d個男生,%d個女生,%d未顯示性別。\n\n'

%(number_of_friends, ***_count[1], ***_count[2], ***_count[0])+

'你的朋友主要來自省份:%s(%d)、%s(%d)和%s(%d)。\n\n'

%(province_count.index[0],province_count[0],province_count.index[1],province_count[1],province_count.index[2],province_count[2])+

'主要來自這些城市:%s(%d)、%s(%d)、%s(%d)、%s(%d)、%s(%d)和%s(%d)。'

%(city_count.index[0],city_count[0],city_count.index[1],city_count[1],city_count.index[2],city_count[2],city_count.index[3],city_count[3],city_count.index[4],city_count[4],city_count.index[5],city_count[5]))

write_file.close()

效果圖:

regex1 = re.compile('') #匹配表情

regex2 = re.compile('\s')#匹配兩個以上佔位符。

signatures = [regex2.sub(' ',regex1.sub('',signature,re.s)) for signature in signatures] #用乙個空格替換表情和多個空格。

signatures = [signature for signature in signatures if

len(signature)>0] #去除空字串

text = ' '.join(signatures)

file_name = nickname+'_wechat_signatures.txt'

with open(file_name,'w',encoding='utf-8') as f:

f.write(text)

f.close()

wordlist = jieba.cut(text, cut_all=true)

word_space_split = ' '.join(wordlist)

coloring = np.array(image.open("f:/program/python/practice/wechat/wechat.jpg")) #詞云的背景和顏色。這張在本地。

my_wordcloud = wordcloud(background_color="white", max_words=2000,

mask=coloring, max_font_size=60, random_state=42, scale=2,

font_path="c:\windows\fonts\msyhl.ttc").generate(word_space_split) #生成詞云。font_path="c:\windows\fonts\msyhl.ttc"指定字型,有些字不能解析中文,這種情況下會出現亂碼。

my_wordcloud.to_file(file_name_p) #儲存

微信好友,朋友圈分享所遇到的坑

function catch e var url window.location.href.tostring ajax wx.ready function cancel function 分享給朋友 title wxtext,分享標題 desc 無所爭 自有聲 攝影大賽 中國國家地理 tcl 分享描...

利用Python爬取朋友圈資料,爬到你開始懷疑人生

人生最難的事是自我認知,用python爬取朋友圈資料,讓我們重新審視自己,審視我們周圍的圈子。文 朱元祿 資料分析 jacky 哲學的兩大問題 1 我是誰?2 我們從 來?本文 jacky試圖用python,資料化 聚類化我們的人格標籤,試圖回答 我是誰?這個哲學問題。一 確定資料來源 自我認知,很...

phone3 4 分享微信好友,微信朋友圈

首先安裝外掛程式,我用的是這個位址的外掛程式,首先是在你的工程裡面安裝外掛程式,命令列如下 cordova plugin add 這個需要安裝git 才能安裝成功。安裝外掛程式後需要匯入jar包,libammsdk.jar,把這個庫放到你的安卓的lib資料夾。位址在 由於是自動安裝外掛程式的,所有在...