话不多说,直接来代码
# 主角itchat
import itchat
# wechat登录
itchat.login()
# 获得全部用户(可能是全部,打印出来太乱了没法看)
user = itchat.get_friends()
初始操作并不复杂,几行代码就得到了全部用户
但是全部用户并不能拿来直接用,需要得到指定value
# 我这里以扫码登录的用户本人为例
# 取出user中的第一段(即用户本人)的信息
i = str(user[:1])
print(i)
# str(),是因为下面还要处理(不转换则i的长度为1,无法进一步处理)
# print(len(user[:1]))
# 仅仅是为了消除一些边边角角,可省略
info = i[8:-2]
print(info)
上面的’info’明明可以省略,为什么我还要写呢?
是因为我原以为消除之后可以转换为json格式,都是泪…
loads()、eval()都试了,留个坑,向路过的老师请教.
import re
# 采用正则的方法提取value
# 下文详解此结构
name = str(re.findall(r"'NickName': '(.+?)'", info))[2:-2]
uin = str(re.findall(r"'Uin': (.+?),", info))[2:-2]
# print(name)
# print(uin)
re.findall(),参数分别为正则表达式和需处理字符串
正则的格式我就不多说了
r“‘NickName’: ‘(.+?)’”,处理‘NickName’: ‘开头与’结尾的中间数据
转换成字符串是为了切片
切片是因为re.findall()处理之后会让value加上[’ ‘],我不需要这种格式(若需要可自行调整)
完整代码展示(仅供参考):
import itchat
import re
itchat.login()
user = itchat.get_friends()
i = str(user[:1])
print(i)
info = i[8:-2]
print(info)
name = str(re.findall(r"'NickName': '(.+?)'", info))[2:-2]
sign = str(re.findall(r"'Signature': '(.+?)'", info))[2:-2]
sex = str(re.findall(r"'Sex': (.+?),", info))[2:-2]
uin = str(re.findall(r"'Uin': (.+?),", info))[2:-2]
print(name)
print(sign)
print(sex)
print(uin)
希望能帮助到大家解决手上的问题
加油,共勉