Python爬微信好友头像,性别,所在地区
本文适合新手(有一定基础的小白)
今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现

/斜眼笑/斜眼笑/斜眼笑
再加上,没事干,(大家有好工作求介绍,本人待就业),Python也很久没弄了,于是(说干就干)
打开Python
import requests
import json
from collections import Counter
from pyecharts import Pie
import hashlib
这里是所要用到的库文件
我们想说思路
第一步,获取Url数据
第二步,看看是不是反爬
第三步,取出数据研究类型
第四步 ,筛选数据,统计图表
第五步,图片下载
第一 获取Url

貌似这里有
第二步,看看防爬嘛(应该反爬,毕竟这么大的公司,所以,管他防不防,都加headers
headers = {
'Cookie': ' ~自己的 ',
'Host': 'wx.qq.com',
'Upgrade-Insecure-Requests': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/'
}
第三步,得出数据

数据是这样的
dict1 = json.loads(list_data.text)
print("%s: %s" % ("好友数" ,dict1["MemberCount"])) #字典
listdata=dict1["MemberList"] # 集合
for lists in range(0,dict1["MemberCount"]): # 把全部用户的地址存储
HeadImgUrls.append(listdata[lists]["HeadImgUrl"])
sexs.append(listdata[lists]["Sex"])
Province.append(listdata[lists]["Province"]+""+listdata[lists]["City"])
rest=Counter(Province) #这里是分组
第四步 ,筛选数据,统计图表
pie = Pie("微信好友用户统计:好友%s" %( +dict1["MemberCount"]), title_pos='center',width=1400,height=600)
pie.add(
"",
countProvin,
Countcity,
radius=[40, 75],
label_text_color=None,
is_label_show=True,
legend_orient="vertical",
legend_pos="left",
)
pie.render()

未知是公众号
因为数据是 1为男, 2为女 0为公众号
数据显示这里我也不知道怎么讲,可以去看文档
http://pyecharts.org/#/zh-cn/charts_configure
第五步,图片下载
获取图片地址。。。
然后下载

代码
# coding:utf8
import requests
import json
from collections import Counter
from pyecharts import Pie
import hashlib
# 微信Url数据获取连接
Wxurl="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?lang=zh_CN&r=1551517351463&seq=0&skey=@crypt_80cc7620_ac3680d314a5860438086e5d54cf177d"
headers = {
Cookie': 'cookie',
'Host': 'wx.qq.com',
'Upgrade-Insecure-Requests': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36'
}
#TODO Province_City 使用到的数组集合
Province = []
Countcity=[]
#TODO 存储性别
sexs=[]
#TODO 存储图片
HeadImgUrls=[]
def SexFun(Sexrests):
# 性别方法
print("男%s" % Sexrests[1])
print("女%s" % Sexrests[2])
print("公众号%s" % Sexrests[0])
pie = Pie("微信好友性别统计" , title_pos='center', width=1400, height=600)
pie.add(
"",
['男','女','未知'],
[Sexrests[1],Sexrests[2],Sexrests[0]],
radius=[40, 75],
title='sex',
label_text_color=None,
is_label_show=True,
legend_orient="vertical",
legend_pos="left",
)
pie.render('sex.html')
print(Sexrests)
#TODO Wechar_data 方法
def Wechar_data(Wxurl,headers):
global Province # 转换为全局变量,假如不转换的话,会报错的
global Countcity
global sexs
global HeadImgUrls
list_data = requests.get(Wxurl,headers=headers)
list_data.encoding = "utf-8"
print(list_data.text)
dict1 = json.loads(list_data.text)
print("%s: %s" % ("好友数" ,dict1["MemberCount"])) #字典
listdata=dict1["MemberList"] # 集合
#print(listdata)
for lists in range(0,dict1["MemberCount"]): # 把全部用户的地址存储
HeadImgUrls.append(listdata[lists]["HeadImgUrl"])
sexs.append(listdata[lists]["Sex"])
Province.append(listdata[lists]["Province"]+""+listdata[lists]["City"])
rest=Counter(Province) #这里是分组
#print(rest)
"""
Counter({'': 29, '湖南郴州': 21, '湖南长沙': 16, '广东深圳': 14, '广东中山': 9, '广东广州': 8, '北京朝阳': 7, '湖南娄底': 4, '湖南怀化': 4, '北京海淀': 3, '湖南益阳': 3, '上海浦东新区': 3, '安徽合肥': 2, '北京西城': 2, '广东佛山': 2, '广东湛江': 2, '湖南株洲': 2, '浙江杭州': 1, '北京东城': 1, '广东': 1, '四川德阳': 1, '辽宁丹东': 1, '河南三门峡': 1, '湖南张家界': 1, '广东肇庆': 1, '上海长宁': 1, '澳门路环岛': 1, '江苏': 1, '上海': 1, '湖南衡阳': 1, '河南南阳': 1, '湖南永州': 1, '北京': 1, 'North Shore': 1, '湖北恩施': 1, '湖南湘潭': 1, '湖南岳阳': 1, '湖南': 1, 'EnglandSheffield': 1, '湖南邵阳': 1, '湖北武汉': 1, '广东珠海': 1, 'Eastern': 1, '江西南昌': 1, 'SabahSemporna': 1, '四川成都': 1, '北京昌平': 1, '福建宁德': 1})
"""
sets = set(Province)
countProvin = list(sets)
#print(countProvin) #city
''' ['', '河南三门峡', '河南南阳', '北京', '广东肇庆', '广东中山', '上海长宁', '湖南长沙', '广东佛山', '福建宁德', '广东深圳', '湖南娄底', '辽宁丹东', '浙江杭州', '湖北恩施', 'North Shore', '湖南', '北京昌平', '上海浦东新区', '澳门路环岛', '湖南株洲', '湖南邵阳', 'SabahSemporna', '广东广州', '湖南张家界', '湖南衡阳', '湖南永州', '湖北武汉', '北京朝阳', '安徽合肥', '北京西城', '湖南岳阳', '广东', '北京东城', '江西南昌', '广东珠海', '四川德阳', '湖南郴州', '湖南益阳', 'EnglandSheffield', '四川成都', '广东湛江', '江苏', '湖南怀化', 'Eastern', '湖南湘潭', '上海', '北京海淀']'''
#print(en(countProvin))48
for iii in range(0,len(countProvin)):
#print(countProvin[iii])
Countcity.append(rest[countProvin[iii]])
#print(Countcity) # num list
try:
countProvin[0]="暂未填写地区"
except Exception:
print("登录授权已过期") pie = Pie("微信好友用户统计:好友%s" %( +dict1["MemberCount"]), title_pos='center',width=1400,height=600)
pie.add(
"",
countProvin,
Countcity,
radius=[40, 75],
label_text_color=None,
is_label_show=True,
legend_orient="vertical",
legend_pos="left",
)
pie.render() #性别判断
Sexrests = Counter(sexs) # 这里是分组
#让代码看上去简单一点使用方法封装
SexFun(Sexrests)
HeadimgFun(HeadImgUrls,headers)
def HeadimgFun(imgdata,headers):
#print(imgdata[0])
md = hashlib.md5() # 构造一个md5
for i in range(0,len(imgdata)):
utllist="https://wx.qq.com"+imgdata[i]
reqs = requests.get(utllist,headers=headers)
reqs.encoding = "utf-8"
md.update(imgdata[i].encode())
imgname=md.hexdigest()+".jpg"
with open('./images/'+imgname, 'wb') as f:
f.write(reqs.content) Wechar_data(Wxurl,headers)
demo
不懂可以问我,觉得好就点个赞哈
Python爬微信好友头像,性别,所在地区的更多相关文章
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 【转】Python微信好友头像拼接图
转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码, ...
- 【python】10分钟教你用python下载和拼接微信好友头像图片
前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...
- Python之微信-微信好友头像合成
仔细看下图,你的头像就藏在里面哦!!! 有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做出来的图看着会更刺激些. 看完了图,你可能想知道这个图咋做出来的,不会是我闲着无聊把把好友头像 ...
- 使用 python 进行微信好友分析
使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordc ...
- 教你用Python制作微信好友背景墙
目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- 爬微信好友签名和QQ好友签名
先说如何爬微信好友签名,主要使用itchat,这个库提供直接的api来获取好友信息,只要用正则过滤出就行了.说一下步骤,就不贴代码了.# 登陆# 获取好友列表# 提取签名# jieba分词# word ...
- 【Python还能干嘛】爬取微信好友头像完成马赛克拼图(千图成像)~
马赛克拼图 何谓马赛克拼图(千图成像),简单来说就是将若干小图片平凑成为一张大图,如下图路飞一样,如果放大看你会发现里面都是一些海贼王里面的图片. Our Tragets 爬取所有微信好友的头像
随机推荐
- 学习docker笔记1
docker是一个能够把开发应用程序自动部署到容器的开源引擎 docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时复制机制(copy-on-write)实现了高 ...
- location匹配禁止页面缓存
php禁止页面缓存的办法 //设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可. add_header Expires: Mon, 26 Jul 1997 05:00:00 GMT ...
- Asp.Net Core 客户端验证和远程验证
我们先来看这样一个注册页面和它的后台Model @model RegisterViewModel @{ ViewBag.Title = "用户注册"; } <h1>用户 ...
- 在Ubuntu中安装了MongoDB后无法启动mongod的问题
今天准备学习MongoDB,没想到下载之后服务器端启动不了,记录一下问题和处理过程 一.安装 在Ubuntu中安装还是很简单,直接:sudo apt install mongodb 二.启动 启动Mo ...
- Python--jsonpath
JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种原因实现保本:JavaScript/Python/PHP和Java. 使用方法如: import jsonpathre ...
- C#基础算法题 找出最大值和最小值
找出最大值和最小值 题目要求 输入n个数,n<=100,找到其中最小的数和最大的数 实现代码 using System; namespace _1.求最大最小 { class Program { ...
- c++/c在两个文件公用一个变量
在一个cpp文件定义一个文件 在另一个文件extern+定义
- react项目中canvas之画形状(圆形,椭圆形,方形)
组件DrawShape.jsx如下: import React, { Component } from 'react' // import ClassNames from 'classnames' i ...
- Elasticsearch 介绍及应用
Elasticsearch简单介绍 Elasticsearch (ES)是一个基于Lucene构建的开源.分布式.RESTful 接口全文搜索引擎.Elasticsearch 还是一个分布式文档数据库 ...
- C#获取客户端Ip工具类
string pcname = Dns.GetHostName(); string ip = Dns.GetHostAddresses(pcname).First().ToString(); usin ...