爬朋友圈好友的个性签名,生成云图(上)

2023-11-19

看了大神的http://mp.weixin.qq.com/s?__biz=MzIxNjA2ODUzNg==&mid=2651436390&idx=1&sn=0ec8030efc28b36c2924e7f02a4462f2&chksm=8c73adb1bb0424a713c94875e6e239f878969d74d75221bd6cba0e5d57367c3fb5a9ab702ecd&mpshare=1&scene=23&srcid=0125a348FGMzsnyu9dj6l8bD#rd
我也爬一爬自己好友的资料(认真脸)。

思路

  • 爬微信好友的资料
  • 将资料中的个性签名去除干扰信息,连接所有信息。
  • 将信息进行分词,以空格连接得到合适的字符串
  • 将字符串以云图形式展示出来。

步骤1-爬资料

  • 新建chat_data.py
  • 安装itchat包
#安装itchat库
pip install itchat

或者在pycharm
file->settings->Project:xxx->project interpreter右侧的+上搜索下载itchat库。

  • 使用itchat.login()进行下载登录二维码图片,然后用户用手机扫二维码,登录自己的微信。
  • 使用itchat.get_friends(update=True)可以得到所有的好友信息
  • 将好友信息中的个别信息存储到csv中,方便后面的操作,这里我主要提取了姓名、性别、省份、城市和个性签名。(也可以只提取个性签名就行)
#使用pandas这个包存储资料到csv
pip install pandas

代码

import itchat
from pandas import DataFrame
itchat.login()
friends = itchat.get_friends(update=True)[0:]

#将所有的资料存入到csv中,用pandas包
#定义一个函数
def get_var(var):
    x = []
    for i in friends:
        value = i[var]
        x.append(value)
    #按字典的键,输出以列表形式
    return x

#调用函数,得到各变量的值
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)
frame.to_csv('test.csv',index=True) #index表示第一行为键

注意:

  • 每个好友的信息如下:
"""
eg:friends[3]:{'MemberList': <ContactList: []>, 'Uin': 0, 'UserName': '@25427d4c0b1d4ef80a0d187c4cb3de959fbb1ab8a07da854facd4926c86edb45', 
 'NickName': 'lala?', 'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=624715047&username=@25427d4c0b1d4ef80a0d187c4cb3de959fbb1ab8a07da854facd4926c86edb45&skey=@crypt_ad0a82b0_c9a278c3f4976649de45681b57a5968f', 
 'ContactFlag': 3, 'MemberCount': 0, 'RemarkName': '', 'HideInputBarFlag': 0, 'Sex': 0, 'Signature': '', 'VerifyFlag': 0, 
 'OwnerUin': 0, 'PYInitial': 'XYXSPANCLASSEMOJIEMOJI1F4AASPAN', 'PYQuanPin': 
'xuyanxinspanclassemojiemoji1f4aaspan', 'RemarkPYInitial': '', 'RemarkPYQuanPin': '', 'StarFriend': 0, 'AppAccountFlag': 0, 'Statues': 0,
 'AttrStatus': 33558565, 'Province': '','City': '', 'Alias': '', 'SnsFlag': 1, 'UniFriend': 0, 'DisplayName': '', 
'ChatRoomId': 0, 'KeyWord': '', 'EncryChatRoomId': '', 'IsOwner': 0}
"""
  • 运行前将电脑上已经登录的微信退出,要用运行过程中的登陆二维码登陆
  • 该程序的名字不可以命名为itchat.py会出现错误。

步骤2-去除干扰信息

  • 新建一个新的chat_cloud.py
  • 读取步骤1生成的csv文件
#一般都有csv,没有就cmd.exe命令行一下
pip install csv
  • 找到个性签名
  • 去除干扰信息
    1. 末尾空格
    2. emoji或者span或者class(查看时候发现到)
    3. <>/=
  • 拼接所有的词

代码

#1.读取csv数据
import csv
csv_reader = csv.reader(open('test.csv',encoding='utf-8'))
"""
 '序号','City', 'NickName', 'Province', 'Sex', 'Signature'
 """
#2.找到个性签名
"""
打印出来发现,句首有空格--用str.strip()去除str末尾的空格
有些是emoji或者span或者class等---replace("emoji","")
<>/=等词--使用正则表达式re包
都要替换掉
拼接所有的词,得到一个text字符串
"""
import re
str1 = []
for i in csv_reader:
    #signature是i[5](0开始),i[0]是序号
    signature = i[5].strip() #去除句尾空格
    signature = signature.replace("emoji","").replace("span","").replace("class","")
    re1 = re.compile("\d+\w*|[<>/=]")
    #\d数字,\w匹配字母数字及下划线,*0-多个
    #rel.sub()对所有匹配到的内容进行替换
    signature = re1.sub("",signature)
    str1.append(signature)
text = "".join(str1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬朋友圈好友的个性签名,生成云图(上) 的相关文章

随机推荐

  • 云服务器木马文件该如何应对,云服务器木马入侵怎么办?服务器中木马怎么排查?...

    由于云服务器的扩展方便 并且能够减少硬件方面的维护成本 因此使用云服务器的用户数量越来越多 但是云服务器也同样存在安全方面的隐患 被入侵的案列也是时有发生 那么云服务器木马入侵怎么办 服务器中木马怎么排查 我们来了解下吧 云服务器木马入侵怎
  • java中抽象工厂模式_Java设计模式之抽象工厂模式

    转自http blog csdn net jason0539 article details 44976775 本文继续介绍23种设计模式系列之抽象工厂模式 前面已经介绍过简单工厂模式和工厂方法模式 这里继续介绍第三种工厂模式 抽象工厂模式
  • js倒计时

    html部分代码 div class time span 60 span span s span div js部分代码 var second document getElementById second var m 60 var time
  • 计算机产业能否迅速发展,工控机产业迅速发展:未来体系结构将更具交互性与可操作性...

    工控机 Industrial Personal Computer IPC 即工业控制计算机 是一种采用总线结构 对生产过程及机电设备 工艺装备进行检测与控制的工具总称 工控机具有重要的计算机属性和特征 如具有计算机CPU 硬盘 内存 外设及
  • 50行Python代码实现代理服务器的详细教程

    代理服务器是一种位于客户端与目标服务器之间的中间服务器 它可以代表客户端发送请求 并将响应返回给客户端 通过搭建自己的代理服务器 我们可以实现请求的拦截 修改和转发等功能 本文将为大家介绍如何使用50行Python代码实现代理服务器 一 准
  • [QT编程系列-37]:数据存储 - 日志文件、日志等级的支持:qDebug、Log4Qt

    目录 1 概述 2 qDebug 2 1 概述 2 2 qDebug对调试等级的支持 通过不同的宏来实现 2 3 qt日志等级的设置 1 概述 在 Qt 中 日志文件的支持通常是通过日志库 日志框架或自定义代码实现的 Qt 本身没有提供内置
  • vue3中实现音频播放器APlayer

    前言 vue2的时候 分享了一个很好用的插件是vue aplayer 但是他是不支持vue3的 这里分享vue3使用APlayer来实现一个播放器的方法 实现效果 官方 git地址 点我 api地址 点我 实现步骤 1 安装 npm npm
  • Spring Boot 过滤器、监听器和拦截器使用

    1 过滤器和监听器 Spring Boot中对于过滤器和监听器的使用跟一般web工程中使用方式没什么不同 使用注解方式就可以快速创建 只是要使用注解方式需要在Application类加上 ServletComponentScan 注解表明开
  • LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题

    LIO SAM 成功适配自己数据集 注意本文测试环境 Ubuntu18 04 ROS melodic版本 笔者用到的硬件以简单参数 激光雷达 速腾聚创16线激光雷达 RS Lidar 16 IMU 超核电子CH110型 9轴惯导 使用频率1
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • mybatis在xml文件中处理大于号小于号的方法

    第一种方法 用了转义字符把 gt 和 lt 替换掉 然后就没有问题了 SELECT FROM test WHERE 1 1 AND start date lt CURRENT DATE AND end date gt CURRENT DAT
  • JAVA依赖冲突解决

    一 问题 启动时报错 二 原因 导入的包中存在依赖冲突 应该是打印日志的 三 解决办法 1 mvn dependency tree 打印项目的依赖树 2 安装MAVEN HELPER 2 1 查看依赖图 2 2 直接查看 四 解决 1 比如
  • SpriteKit框架详细解析(四) —— 创建一个简单的2D游戏(二)

    转自 https www jianshu com p 33f28911db17 版本记录 版本号 时间 V1 0 2017 08 12 前言 SpriteKit框架使用优化的动画系统 物理模拟和事件处理支持创建基于2D精灵的游戏 接下来这几
  • element级联懒加载多选不能回显问题

    1 定位原因 懒加载的级联下拉框无法回显是因为 只绑定了model的值 没有options的数据支撑的话 获取不到节点的内容导致 2 方案 拿到选中的项的时候 用这些值去递归循环获取相应的节点的一些属性 赋值给options 然后注意最后一
  • yolo v3 fatal : Memory allocation failure

    torch版的 yolov3报错 fatal Memory allocation failure parser add argument n cpu type int default 8 help number of cpu threads
  • 蚂蚁笔记私有部署

    说明 其实官方的教程中已经写得很清楚了 我写这个主要是为了记录一下我自己当时安装的过程 方便后续查询 官方文档请查阅 https github com leanote leanote wiki 环境要求 CentOS6 5 Nginx Mo
  • (原理及配置)nginx配置负载均衡

    背景介绍 早期的网站流量和业务功能都比较简单 单台服务器就可以满足基本需求 但是随着互联网的发展 业务流量越来越大并且业务逻辑也越来越复杂 单台服务器的性能及单点故障问题就凸显出来了 因此需要多台服务器组成应用集群 进行性能的水平扩展以及避
  • 一台电脑双 GitHub 账户配置,同时两个 SSH 密钥

    前言 本人搞了两个 GitHub 账号 一个用来正常的和别人合作项目 另一个用来自己写一些代码 希望能做到两个本地账户和远程账号都完全隔离 没有联系 也不会被混淆使用 但是这样就会有一个问题 设置本地用户 user email 时候 如果两
  • 嵌入式物联网协议--MQTT

    本文使用MQTT 3 1 1版本 目录 一 MQTT简介 1 什么是MQTT 2 MQTT本质 3 MQTT报文类型 4 MQTT Qos质量 二 14个报文详解 1 CONNECT报文 1 C gt S 固定报头 可变报头 负载 1 固定
  • 爬朋友圈好友的个性签名,生成云图(上)

    看了大神的http mp weixin qq com s biz MzIxNjA2ODUzNg mid 2651436390 idx 1 sn 0ec8030efc28b36c2924e7f02a4462f2 chksm 8c73adb1b