python爬取微信好友信息并根据导出的csv做数据分析

【分享】获取微信通讯录python代码形式实现 微信号”, “昵称”, “地区”, “备注”, “标签”, “签名”, “来源”5. 找到最后一个空格所在的位置(后一个就是真正的联系人了)当前微信号与上一个相同的时候,说明到底部了,可以跳出循环。3. 滚动鼠标到最顶部(防止已经滚动了一部分了)7.记录下上一个联系人的微信号。7. 无限循环按键盘下箭头。获取详情中的以下元素内容。6. 点击第一个联系人。4. 获取联系人列表。 阅读详情
写在前面:

之前了解过一点python,前两天看了一篇文章,一件有趣的事:我用 Python 爬了爬自己的微信朋友,感觉还挺有意思的,不过文章看完了,自己敲代码的时候还是有点坑踩进去的,所以我写篇文章来填坑啦!顺便把省份统计拿出来做个范例。

正文

pip install itchat,pip install pandas安装依赖。

多说一句,一般写python都会在文件开头加一句

#coding=utf8 coding和后面的等于号之间不要有空格。

首先安装了这个包之后小试牛刀,打印一下男女人数并且利用pandas输出好友列表文件。

#coding=utf8 
import itchat
def get_var(var): #定义获取变量的方法
	variable = []
	for i in friends:
		value = i[var]
		variable.append(value)
	return variable

itchat.login() # 实现登录功能,会弹出一个二维码让你扫描
friends = itchat.get_friends(update=True)[0:] #获取好友列表

male = female = other = 0

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)
print(female)
print(other)

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('data.csv', index=True) #输出csv文件

上面这段代码没啥问题,主要是啥呢,这个csv文件是个乱码!怎么读取这个文件呢?下面我们分两种情况来介绍:

第一种,直接读取csv文件。

首先这个乱码问题得解决吧,这个时候推荐文件的打开方式为一个编辑器,什么notepad++啊,sublime啊,或者vscode然后选择保存格式为UTF-8,具体操作针对不同编辑器方式各异,大家可自行搜索,学会搜索是成为一个优秀程序员的秘技。格式修改过来了自然也就不乱码了。

data.csv和本文件都放到桌面上了,所以路径直接读取就好。

#coding=utf8 
# 解析csv,本文件是用于解析微信好友列表

import csv
import io #自带
import sys #自带
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
exampleFile = open('data.csv','r', encoding='UTF-8')
exampleReader = csv.reader(exampleFile)
provinces = {}
for row in exampleReader:
	# print('Row #' + str(exampleReader.line_num) + ' ' + str(row))
	if (row[3] in provinces.keys()):
		provinces[row[3]] = provinces[row[3]] + 1
	else:
		provinces[row[3]] = 1
print (sorted(provinces.items(), key=lambda d: d[1], reverse=True))

什么?import io, import sys,还有下面一句是干嘛的,那你需要把这几句去掉看看发生了。没错,控制台的中文正常显示变成乱码了。

多说几句,这里dict存储的数据结构为{‘浙江省’: 3,‘河北省’: 5}这种形式,if else判断,比如有浙江省这个key了,那么就给后面的value + 1如果没有,则赋值1

最后一句话是根据dict的value倒序排列,打印的数据根据省份从大到小排序。

坑点
  1. 文件命名不要是csv.py,为什么呢,因为一旦你这样命名你import 的csv不是自带的包了,他会把当前文件引用进来,然后报错没有reader这个属性,所以不要以包名称直接命名文件。

  2. 如果不慎以csv.py命名了,你可能会发现以后import csv都会出现问题,这时候你需要去当前文件夹下找csv.py文件和一个缓存文件,即使你刚刚执行了重命名操作。

  3. exampleFile = open('data.csv','r', encoding='UTF-8')如果不加后面的 r 和 encoding ,会报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence

然后你说不想用csv文件,你比较喜欢excel,那我们就来读一下excel。不要直接将csv改个后缀变成excel,即使那样生成的文件也很像一个excel,但是程序是读不出来的!这样,新建一个excel文件,然后将csv中的内容拷贝过来,粘贴到excel上就可以了。openpyxl是自带的,不需要下载

#coding=utf8 
# 解析excel,本文件是用于解析微信好友列表

import openpyxl
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
wb = openpyxl.load_workbook('wechat-data.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
friendsData=[]
for row in range(3, sheet.max_row):
	NickName = sheet['B' + str(row)].value #表示读取的是B单元格中的数据
	Sex = sheet['C' + str(row)].value
	Province = sheet['D' + str(row)].value
	City = sheet['E' + str(row)].value
	Signature = sheet['F' + str(row)].value
	friendData = { #因为只想统计省份,所以没有添加其他属性
		'nick': NickName, 
		'province': Province
	}
	friendsData.append(friendData) #先将数据拼接成一个数组,这也是同csv不同的一步
provinces = {}
for friend in friendsData:
	if (friend['province'] in provinces.keys()):
		provinces[friend['province']] = provinces[friend['province']] + 1
	else:
		provinces[friend['province']] = 1
print (sorted(provinces.items(), key=lambda d: d[1], reverse=True))

说实话,看了代码是不是发现csv文件更方便一些,没错因为csv更接近我们的文本格式。

坑点
  1. 虽说python不需要提前声明变量,但是当使用append方法的时候,他需要知道他是一个数组,所以要在for循环前面加上一个变量的初始化操作。
  2. 有时会遇到一个格式错误 IndentationError: unindent does not match any outer indentation level,这个时候考虑代码中将报错的代码行将有多余的Tab键或者空格键,什么意思呢,也就是if或者else的下一行与前面的间隙格式要统一,是空格就都是空格,是Tab键就都是Tab键。推荐文件统一使用Tab键。
  3. 之前看的一本书的介绍,但是好多属性都变了大家注意下即可。比如 sheet.max_row是新属性,之前是一个方法返回的,但是现在已经不支持该方法了,会导致错误。

本文只是分析了省份数据,其他的可以自行发挥。

说到最后

渐渐发现,python这门语言可以无关项目,无关工程仅仅作为一个脚本语言,可以很大的让我们意识到编程为人们服务的特点,适合提升自己的兴趣,愿我们都能越来越好。

python爬取微信聊天记录数据_[使用案例]python如何爬取微信好友信息?(上) Python3如何爬取微信好友基本信息,并且进行数据清洗?下面跟着IP海带来的教程,我们一起看看具体的操作要怎么实现。1、登录获取好友基础信息:好友的获取方法为get_friends,将会返回完整的好友列表。其中每个好友为一个字典列表的第一项为本人的账号信息传入update键为True将可以更新好友列表并返回'''微信:Date:20180918Author:lizmDescription:爬取微... 阅读详情

相关推荐

用Python爬取微信好友签名并生成词云(解决词云白板问题)

今天上班看到一篇关于用Python爬取微信好友签名并生成词云的文章,觉得很有趣,就学着尝试爬取自己的微信好友签名,菜鸟写代码,总是会出现很多问题,摸索了一天,终于成功了。记录下自己的经过,希望能给像自己一样的小白一点点参考 本博客代码参考https://github.com/ablo120/PythonLearn/blob/master/wechat_friend.py 前言:建议Python小...

lixuemei2018的博客 734

用Python获取了微信好友数据,进行可视化分析发现~

大家好!因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~我们这次使用的是Itchat库来获取的微信好友数据。

大模型教程的博客 2033

Python爬取招聘网站岗位信息

import time import csv from selenium import webdriver if __name__=='__main__': positions = [] while (True): position = input('请输入要搜索的岗位名称,如python,数据分析等,按回车完成。可以输入多次,"n"或"N结束输入:') if position == 'n' or position == 'N': .

weixin_45387160的博客 3541

导出微信好友,批量加好友、导出微信群员信息

下面的代码都测试过了,基于千寻框架。

无心 3138

pywinauto爬取微信通讯录 2023年1月有效

将微信窗口固定到这个位置,即通讯录第一个人的显示。3.运行一段时间后观察data.txt。2.运行如下代码并将鼠标焦点到微信窗口。使用pywinauto爬取微信通讯录。

anananajiushiwo的博客 2610

基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫项目源码.zip

基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫项目源码.zip 基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫 使用方法: 1.安装android SDK,并在环境变量中添加ANDROID_HOME变量,变量地址为SDK的地址 2.安装appium 3.android手机通过usb接口连接电脑,打开usb调试,选择连接方式为传输文件 4.打开appium并启动服务器 5.运行程序 注意: 不同版本微信可能控件id不同,可以通过android sdk里的uiautomatorviewer或者appium设置session获取自己手机微信的控件id,并替换文件中的id。

python爬qq信息_微信好友信息如何python爬取?(上)

Python3如何爬取微信好友基本信息,并且进行数据清洗?下面跟着IP精灵带来的教程,我们一起看看具体的操作要怎么实现。1、登录获取好友基础信息:好友的获取方法为get_friends,将会返回完整的好友列表。其中每个好友为一个字典列表的第一项为本人的账号信息传入update键为True将可以更新好友列表并返回'''微信:Date:20180918Author:lizmDescription:爬取...

weixin_39925031的博客 456

python实现微信自动回复及批量添加好友功能

主要介绍了python实现微信自动回复及python 批量生成微信添加好友截图功能的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

Python 爬取微信聊天记录并分析聊天内容

Python爬取微信聊天记录并内容分析

Justineone的博客 2万+

基于python实现微信好友数据分析(简单)

一、功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式 2.统计好友的地域分布,并且做成词云和可视化展示在地图上 二、依赖库 1、Pyecharts:一个用于生成echarts图表的类库,echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒,使用pyechart库可以在python中生成echarts数据图。 2、Itchat:一个开源的微信个人号接口,使用python调用微信从未如此简单。 3、Jieba:简单的分词操作库

手把手教你用微信小程序实现智能硬件音视频通话(含Linux/RTOS适配)

本文详细介绍了如何利用微信小程序硬件框架(WMPF)和音视频SDK,在智能硬件(包括Linux与RTOS设备)上实现音视频通话功能。文章从架构设计、设备端SDK集成、小程序VOIP插件开发到跨平台调试与性能优化,提供了全链路实战指南,帮助开发者打通微信小程序与嵌入式设备间的实时音视频通信。

ooo22的博客 330

Python微信好友数据分析

1、导入工具包 import itchat import re import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud from wordcloud import ImageColorGenerator import numpy as np import pandas as pd import PIL...

Janet_zyh的博客 1247

汇丰外包Java岗面试复盘:Zoom面1.5小时,从英语、粤语到现场敲代码的极限挑战

本文详细记录了汇丰银行外包Java岗位的面试全过程,包括多语言切换(英语、粤语)的技术沟通挑战和现场编码测试的实战经验。从高并发编程到JVM调优,面试不仅考察技术深度,更注重实战问题解决能力。文章分享了应对跨国银行技术面试的实用策略,帮助Java开发者在跨文化环境中提升竞争力。

weixin_42524824的博客 363

Python 爬取微信聊天记录并分析聊天内容_python自动抓取微信聊天内容

下载微信聊天记录爬取程序:(软件安全正常,直接无视安全问题😎)电脑需要登录微信,如果电脑微信聊天记录不齐全,可以通过手机进行微信聊天记录打开软件,随后点击,获取手机号、微信昵称、wxid等内容,之后点击就行。若出现wxid或微信路径无法获取问题,查看解决办法(")),一般都是没问题的。选择 “”,选择你想要导出的联系人信息。导出格式选择,方便我们后续利用python进行数据分析:​导出后的结果在程序同目录下的““文件中,我们需要csv文件,记住csv文件的地址,自此微信聊天记录爬取结束👌。

2401_84009300的博客 5883

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1794

SAP MD09 事务码中的物料需求追溯详解

物料需求追溯是指在物料需求计划中,追踪特定物料的需求来源和满足方式的过程。它帮助企业确定每个需求(如销售订单、独立需求、预留等)是由哪些供应元素(如库存、生产订单、采购订单等)来满足的。通过这种追溯,企业可以了解需求和供应之间的关系,从而优化生产和采购计划,减少库存积压,提升供应链效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1197

chatgpt赋能python:Python爬取数据并生成CSV文件简介

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

qq_45562973的博客 1004

SI案例分享--FPC(柔性电路板)信号仿真

设计高性能的柔性PCB时,由于采用了网格地的参考面构造,因此,需要按照特定的结构进行布局,才可以保证所需目标阻抗的稳定性,该结构的配置过程称为“Hatch Configuration”,合理的参数配置将有助于得到满意的设计效果。

一只豌豆象的博客 2831

python项目:获取微信好友信息(一)抓取微信好友数据

本文将记录对知乎专栏中的一篇小项目,自己尝试中所遇到的问题。 知乎链接:https://zhuanlan.zhihu.com/p/21967333 先贴出完整源代码。 代码中:使用二维码登录网页版微信,并下载好友头像,并将好友资料数据存入csv文件,待进一步处理。 笔者使用的环境为python3.5。 import os import requests import re import

qwerty200696的博客 1万+

【WRF-Urban数据集】 WRF 模型城市冠层参数 GloUCP 的使用

【数据集】 WRF 模型城市冠层参数 GloUCP 的使用

WW、forever的博客 484

解决MiGPT部署痛点:小米账号异地登录安全验证的解决方案

为让小米音箱更智能🤖,部署MiGPT时遇到小米账号异地登录验证问题,手动验证后仍无法解决。本文分享亲测有效的简化方案✨:通过浏览器F12获取passToken📝,手动创建mi.json配置文件并挂载到Docker容器,无需本地运行MiGPT,直接绕过异地验证,附完整操作步骤和问题排查指南。

XiaoqiangClub的博客 1452

爬取微信好友信息

在写程序之前,需要安装Pillow、itchat、pandas三个模块。此三个模块可以直接使用pip进行安装,将生成信息写进csv文件中,或将信息生成字典(有代码),或将每条信息写进自己的数据库都皆可用于分析好友男女比例与获取好友备注、昵称、所在城市以及个性签名等信息。 import itchat from pandas import DataFrame itchat.login() frie...

植魂人的博客 1940

Android 13.0 设置默认屏幕亮度百分比

在13.0的系统ROM产品开发中,在一些产品开发中,对于设置默认屏幕亮度和屏幕亮度百分比的功能,在开发中也是常见的功能,在10.0的平台设置可能有一些不同,一般的都是在SettingProvider中设置就可以了 在11.0以后的系统中设置默认屏幕亮度的方法就不同了,接下来具体分析功能的实现

安卓兼职framework和app工程师的博客 1560

爬取好友微信信息

import itchat itchat.login() #爬取自己好友相关信息, 返回一个json文件 friends = itchat.get_friends(update=True)[0:] male = female = other = 0 #friends[0]是自己的信息,所以要从friends[1]开始 for i in friends[1:]: sex =...

weixin_30394251的博客 148

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python爬虫25 | 爬取下来的数据怎么保存? CSV 了解一下

大家好 我是小帅b 是一个练习时长两年半的练习生 喜欢 唱! 跳! rap! 篮球! 敲代码! 装逼! 不好意思 我又走错片场了 接下来的几篇文章 小帅b将告诉你 如何将你爬取到的数据保存下来 有文本文件、redis、数据库(MySQL、MangoDB)等的...

weixin_30725467的博客 1058

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

用python爬取一个人所有信息_python实战===爬取所有微信好友的信息

'''爬取所有T信好友的信息'''importitchatfrom pandas importDataFrameitchat.login()friends=itchat.get_friends(update=True)[0:]defget_var(var):variable=[]for i infriends:value=i[var]variable.append(value)returnvari...

weixin_39599830的博客 262

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: react+koa+socket.io实现群聊功能
下一篇: react下绘制word申请表
Run_youngman
博客等级 码龄12年 355粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值