编程语言
首页 > 编程语言> > 【微信辅助】疫情当前,python帮你找出朋友圈的武汉朋友给予关怀

【微信辅助】疫情当前,python帮你找出朋友圈的武汉朋友给予关怀

作者:互联网

我是程序员小小叶,为大家带来原创精彩技术内容。

疫情无论是对于个体还是企业都是无法承受之重。希望疫情早日过去,这是作为一个普通人一个的小小心愿。

我们身边的亲朋好友也或多或少受到了疫情的影响,让我们来通过python找出朋友圈的武汉朋友给予关怀。
在这里插入图片描述
第一步,首先还是先安装wxpy,其次就是安装本文中地图绘制所用到的pyecharts模块

pip install wxpy # 支持微信相关功能

pip install pyecharts # 支持地图绘制功能

pip install pyecharts_snapshot

第二步,根据需要下载所需要的地图数据包,pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。这里我们选择中国省级地图: echarts-china-provinces-pypkg进行下载,用于显示湖北省的地图

全球国家地图: echarts-countries-pypkg:世界地图和 213 个国家,包括中国

中国省级地图: echarts-china-provinces-pypkg:23 个省,5 个自治区

中国市级地图: echarts-china-cities-pypkg:370 个中国城市

中国县区级地图:echarts-china-counties-pypkg:2882 个中国县·区

中国区域地图:echarts-china-misc-pypkg:11 个中国区域地图,比如华南、华北。

除此之外,英国2016选区图: echarts-united-kingdom-pypkg:英国选区图可以用来画与政治经济相关的数据

pip install echarts-countries-pypkg

pip install echarts-china-provinces-pypkg

pip install echarts-china-cities-pypkg

pip install echarts-china-counties-pypkg

pip install echarts-china-misc-pypkg

环境准备好之后,紧接着设计策略。

1.通过Bot(cache_path=True).friends()函数获取好友信息,从中找到我们寻找的湖北朋友;

2.向eCharts添加自定义geojson数据实现地图展示;

3.自定义祝福话术,随机发送给湖北好友列表
在这里插入图片描述完整代码:

# encoding: utf-8
"""
@author: 程序员小小叶
@contact: 3203636266@qq.com
@微信公众号:程序员小小叶
@time: 2020/2/19 13:03
@file: case4.py
@desc: 疫情当前,python帮你找出朋友圈的武汉朋友给予关怀
"""
from wxpy import *
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType
from pyecharts.globals import ThemeType
import webbrowser
import random


def is_Chinese(word):  # 由于存在国外友人,所以这里要滤除国外英文地名以及不填地区的好友
	for ch in word:
		if '\u4e00' <= ch <= '\u9fff':
			return True
	return False


bot = Bot(cache_path=True)
# 获取所有好友的信息
friends = bot.friends()
# 获取省份信息,并过滤出湖北的好友
china_friends_sum = {}
hubei_friends_sum = {}
hubei_friends = []
for f in friends:
	province = f.province
	if is_Chinese(province):
		if province in china_friends_sum:
			china_friends_sum[province] += 1
			if province == '湖北':
				city = f.city
				print(f.remark_name)
				print(f.city)
				hubei_friends.append(f)
				if city in hubei_friends_sum:
					hubei_friends_sum[city] += 1
				else:
					hubei_friends_sum[city] = 1
		else:
			china_friends_sum[province] = 1
# 由于微信内的城市名称不带“市”,且部分自治州也是简称,所以要进行补全,如恩施土家族苗族自治州
hubei_citys = ['黄冈市', '黄石市', '鄂州市', '武汉市', '咸宁市', '孝感市', '随州市', '天门市', '仙桃市', '荆州市', '荆门市', '潜江市', '襄阳市', '宜昌市', '十堰市',
               '神农架林区', '恩施土家族苗族自治州']
echart_data = []
max = 0
for m in hubei_friends_sum:
	for city in hubei_citys:
		if m in city:
			item = (city, hubei_friends_sum[m])
			echart_data.append(item)
			if hubei_friends_sum[m] > max:
				max = hubei_friends_sum[m]
print(echart_data)
print(max)
print(china_friends_sum)


# 绘制分布地图
def geo_guangdong() -> Geo:
	c = (
		Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))
			.add_schema(maptype="湖北")  # 也可以是其他省,那么对应的城市名也是需要修改的
			.add("", echart_data, ChartType.EFFECT_SCATTER,
		         is_selected=True, symbol=None, symbol_size=6, color="red")
			.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
			.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True, max_=max, ),
		                     title_opts=opts.TitleOpts(title="微信好友湖北分布图", pos_left="300")
		                     )
	)
	return c


g = geo_guangdong()
g.render('微信好友湖北分布图.html')
# 用浏览器打开生成的本地网页
# webbrowser.open("微信好友湖北分布图.html")
# 分别发送祝福给对方
# 祝福语录集
wishes = ["出门戴口罩哦!勤洗手勤通风,少出门不聚集!",
          "保持好心态、重防护、勤消毒,减少出门和聚会,保护好自己和家人。",
          "但行好事,莫问前程,共渡难关。"]
print(len(wishes)-1)
for hf in hubei_friends:
	print(hf.remark_name)
	target = bot.search(hf.remark_name)[0]  # 这里‘’填入微信好友昵称
	target.send(wishes[random.randint(0, len(wishes)-1)])
# 进入Python命令行,让程序保持运行
embed()

在这里插入图片描述

如果你在学习Python,不妨关注点赞收藏一下!

同名公众号:程序员小小叶,关注发送“数据分析”,赠送《利用 Python 进行数据分析》(中文带书签)电子书(学习 Python 基础库最好的书。)

在这里插入图片描述

程序员小小叶 发布了2 篇原创文章 · 获赞 0 · 访问量 21 私信 关注

标签:pyecharts,python,微信,地图,china,朋友圈,pypkg,echarts,opts
来源: https://blog.csdn.net/weixin_32229703/article/details/104411996