本文适合新手(有一定基础的小白)

今天没事,用的网页版微信,于是看源码心理作怪,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爬微信好友头像,性别,所在地区的更多相关文章

  1. 如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  2. 【转】Python微信好友头像拼接图

    转自:Python微信好友头像拼接图 今天在朋友圈看到有人发了微信好友拼接图,心里满是新奇,看了下评论才知道用Python写的.心里痒痒,立马就安装了下Python. 安装好了之后,看了下大神的代码, ...

  3. 【python】10分钟教你用python下载和拼接微信好友头像图片

    前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...

  4. Python之微信-微信好友头像合成

    仔细看下图,你的头像就藏在里面哦!!! 有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做出来的图看着会更刺激些. 看完了图,你可能想知道这个图咋做出来的,不会是我闲着无聊把把好友头像 ...

  5. 使用 python 进行微信好友分析

    使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordc ...

  6. 教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  7. 利用python进行微信好友分析

    欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...

  8. 爬微信好友签名和QQ好友签名

    先说如何爬微信好友签名,主要使用itchat,这个库提供直接的api来获取好友信息,只要用正则过滤出就行了.说一下步骤,就不贴代码了.# 登陆# 获取好友列表# 提取签名# jieba分词# word ...

  9. 【Python还能干嘛】爬取微信好友头像完成马赛克拼图(千图成像)~

    马赛克拼图 何谓马赛克拼图(千图成像),简单来说就是将若干小图片平凑成为一张大图,如下图路飞一样,如果放大看你会发现里面都是一些海贼王里面的图片. Our Tragets 爬取所有微信好友的头像

随机推荐

  1. 多线程,线程池与BeginInvoke()

    在WinForm中,很多情况下需要用到多线程,下面我来简单介绍一下多线程的基本用法. 1.线程.   (1)线程的初始化  Thread t = new Thread(new ThreadStart( ...

  2. maven生命周期及每个阶段自动关联的插件

    生命周期Lifecycle http://maven.apache.org/ref/3.6.1/maven-core/lifecycles.html#default_Lifecycle clean 包 ...

  3. gd库的相关内容

    gd库注意事项 对于乱码问题 在php里面包含 header("content-type:image/png"); 这样输出的图像就不会乱码了后面跟的Png也可以改变为自己想要输出 ...

  4. 查询 ip占用导致ip不通的 问题 查IP对应的mac地址

    IP冲突,  同一个IP配到了多余1台的机器上 ,导致IP 不通的情况,此时需要查询 都有哪台机器配置了这个IP,用 arping 命令, 具体命令 类似于 ping ,直接 arping + 目标地 ...

  5. SQL 语句是如何执行的

    SQL 语句是如何执行的,虽然SQL是声明式语言,我们可以像使用英语一样使用它,不过在RDBMS(关系型数据库管理系统)中,SQL的实现方式还是有差别的.极客教程从数据库的角度来思考一下SQL是如何被 ...

  6. 【计算机视觉】纹理特征之LBP局部二值化模式

    转自http://blog.csdn.NET/ty101/article/details/8905394 本文的PDF版本,以及涉及到的所有文献和代码可以到下列地址下载: 1.PDF版本以及文献:ht ...

  7. 洛谷 题解 P1908 【逆序对】

    一开始竟然妄想用\(n^2\)的算法过这题,然而这是不可能的 所以只好写归并排序来求逆序対惹 比如将下面两个区间排序 3 4 7 9 1 5 8 10 首先将右区间的\(1\)取出,放到\(r_k\) ...

  8. iOS开发支付篇——内购(IAP)详解

    1 <em>内购所需要的资料整理总结,史上最完整的,哈哈哈哈哈哈</em> 思维导图 重点总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 1.获取内购列表( ...

  9. Oracle10G安装手册

    环境准备: 操作系统:windows-7 32bit 数据库:oracle10G 网络环境:不能使用DHCP模式,必须设置一个固定IP地址. 运行安装 1.打开oracle安装文件,请勿直接选择set ...

  10. WEBservice的浏览器及元素的常用函数及变量整理总结 (selenium )

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...