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 爬取所有微信好友的头像
随机推荐
- 物联网防火墙himqtt源码之MQTT协议分析
物联网防火墙himqtt源码之MQTT协议分析 himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWall,C语言编写,采用epoll模式支持数十万 ...
- 最新 拉卡拉java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.拉卡拉等10家互联网公司的校招Offer,因为某些自身原因最终选择了拉卡拉.6.7月主要是做系统复习.项目复盘.LeetCo ...
- NLog文章系列—系列文章目录以及简要介绍
参考文章:http://www.cnblogs.com/dflying/archive/2006/12/04/581750.aspx
- mybatis 一对多,多对一配置
一. 简介: 本实例使用顾客和订单的例子做说明: 一个顾客可以有多个订单, 一个订单只对应一个顾客 二. 例子: 1. 代码结构图: 2. 建表语句: CREATE DATABASE test; US ...
- python 元组tuple - python基础入门(14)
在上一篇文章中我们讲解了关于python列表List的相关内容,今天给大家解释一下列表List的兄弟 – 元组,俗称: tuple. 元组tuple和列表List类似,元组有如下特点: 1.由一个或者 ...
- windows使用sqlpus连接oracle 数据库
1.先安装好Instant Client程序. 2.打开cmd 执行sqlplus命令,如果出现如下图 2.说明需要把oracle install 的bin目类 添加系统环境path中,如下图添加环境 ...
- oracle导入.dmp脚本
一.更改数据库管理员sys/system密码 1.运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus /nolog 4.输入:connect /as ...
- (十)EL表达式和JSTL标签快速入门
目录 什么是 el 表达式 示例:使用EL表达式获取pageContext .request.session.application域中的数据: 示例:使用EL表达式获取Bean属性 获取当前WEB应 ...
- 题解 CF437C
基本思路---贪心 既然要求最小代价,当用一定顺序删除时代价一定最小,不难发现,每次都删去x,y中最小的,最后的总代价业一定最小! 因此就可以写出下面的简单的代码 代码 #include<ios ...
- 2020企业python真面试题持续更新中
目录 1.软件的生命周期 2.如何知道一个python对象的类型 3.简述Django的设计模式MVC,以及你对各层的理解和用途 4.什么是lambda函数,说明其使用场景 5.python是否支持函 ...