[使用案例]python如何爬取微信好友信息?(上)
Python3如何爬取微信好友基本信息,并且進(jìn)行數(shù)據(jù)清洗?下面跟著IP海帶來(lái)的教程,我們一起看看具體的操作要怎么實(shí)現(xiàn)。
1、登錄獲取好友基礎(chǔ)信息:
好友的獲取方法為get_friends,將會(huì)返回完整的好友列表。
其中每個(gè)好友為一個(gè)字典
列表的第一項(xiàng)為本人的賬號(hào)信息
傳入update鍵為T(mén)rue將可以更新好友列表并返回
'''
微信:
Date:20180918
Author:lizm
Description:爬取微信好友、公眾號(hào)、群聊基本信息,并進(jìn)行數(shù)據(jù)清洗
'''
import itchat
from pandas import DataFrame
import pandas as pd
import re
#1、登錄(每次登錄都要掃二維碼)
itchat.login()
#登錄(只需要掃碼一次,第二次運(yùn)行手機(jī)微信會(huì)彈出確認(rèn)框)
#itchat.auto_login(hotReload=True)
#爬取自己好友相關(guān)信息, 返回一個(gè)json文件
friends = itchat.get_friends(update=True)[0:]
#print(friends)
2、統(tǒng)計(jì)性別并圖形展示(pyecharts)
#2、統(tǒng)計(jì)性別
#初始化計(jì)數(shù)器
male = female = other = 0
#friends[0]是自己的信息,所以要從friends[1]開(kāi)始
for i in friends[1:]:
sex = i["Sex"]
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other +=1
#計(jì)算朋友總數(shù)
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=''):
#過(guò)濾表情
try:
co = re.compile(u'[U00010000-U0010ffff]')
except re.error:
co = re.compile(u'[uD800-uDBFF][uDC00-uDFFF]')
return co.sub(restr, desstr)
#定義一個(gè)函數(shù),用來(lái)爬取各個(gè)變量
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("爬取數(shù)據(jù)[%s]>>>>:%s" %(var,value))
else:
pass
variable.append(value)
return variable
#調(diào)用函數(shù)得到各變量,并把數(shù)據(jù)存到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下運(yùn)行,需要轉(zhuǎn)碼,系統(tǒng)默認(rèn)是gbk,需要手動(dòng)設(shè)置;注意:utf-8還是亂碼,得設(shè)置為utf-8-sig
frame.to_csv('data.csv', index=True,encoding='utf_8_sig')
進(jìn)行到這里,我們的流程就已經(jīng)完成一半了,還有兩個(gè)關(guān)鍵步驟,我們?cè)谙乱黄恼吕^續(xù)分析。
版權(quán)聲明:本文為IP海(iphai.cn)原創(chuàng)作品,未經(jīng)許可,禁止轉(zhuǎn)載!
Copyright © www.wibm.ac.cn. All Rights Reserved. IP海 版權(quán)所有.
IP海僅提供中國(guó)內(nèi)IP加速服務(wù),無(wú)法跨境聯(lián)網(wǎng),用戶(hù)應(yīng)遵守《服務(wù)條款》內(nèi)容,嚴(yán)禁用戶(hù)使用IP海從事任何違法犯罪行為。
鄂ICP備19030659號(hào)-3
鄂公網(wǎng)安備42100302000141號(hào)
計(jì)算機(jī)軟件著作權(quán)證
ICP/EDI許可證:鄂B2-20200106