为微信公众号接入疫情数据查询

本文最后更新于:2020年5月2日 晚上

前言

话接上文的《利用Python爬取丁香园疫情数据》,本次将利用这个完成的api,对接微信,实现微信公众号疫情查询。如果未看过上一篇文章的,可以 点我前往

准备

本次利用了python微信公众号开发框架的一个模块——werobot,具体功能可以阅读官方文档
除此之外,我们还需要一台服务器(仅指出80或443端口),用作公众号的功能对接。

开始

为了文章内容与字数考虑,本文不从零开始描述如何进行公众号的基本对接和验证,直接开始到功能添加。

判断公众号位置数据内容

为了判断用户位置,我们需要知道用户发送了的地图位置数据在后台显示的是什么,所以我们分别到前后端进行查看。

后端

首先后端先写好调试的代码,为了方便观察,我们debug和return同时返回用户发送的location的数据内容。
代码
并且启动我们的端口监听
启动

前端

然后我们去前端发送位置数据,看看返回了什么。
前端

数据判断

再去看看后端
后端
可以看到,前端和后端都返还了一个经纬度数据,并且数据类型是tuple(可以自行用type()函数进行查询)。

逆地理编码

微信公众号的地图数据返回的是经纬度信息,但是我们上次实现的是利用地区的名字判断查询的疫情数据,所以我们需要用到百度开发平台的逆地理编码,实现将左边地址转换为地区信息。即使是未认证的用户也有每日六千条的配额,并发50次/s,对于普通用户来说完全足够。
所以我们利用百度账号登录这个开发者平台,创建一个应用
注册应用
具体步骤就不展示了,记得勾选逆地理编码就行。
然后我们查看官方的逆地理编码调用文档
服务文档
这边你们自己看看奥,既然都是程序员了,这点基础肯定有的,或者看我写的成品。
api请求
为了不必要的麻烦,我们先本地指定经纬度,并且分析下返回的数据。
api返回数据
可以发现是成功的,我们也知道返回json的具体内容,剩下的就是接入完善了。

代码接入

上面的api已经写完了,然后就是和上次的内容对接了。
功能对接

功能测试

我们再将写好的代码转到后端,然后运行。去前端试一试。
功能测试
大功告成!

后话

本次主要的难点在于需要调用百度的地理逆编码,总体还是简单的,这样我们就为我们的公众号增添了一个疫情查询功能。

但是这段代码仍然有缺陷:

  1. 是上次遗留下来的问题,地区查询因为部分例如自治区或者街道等特殊名称,导致无法利用简单的[:-1]进行匹配
  2. 其实也和第一个差不多,我们利用的是名字暴力循环匹配查找,理想状态是直接通过经纬度获得疫情数据(应该能实现,但得另外想办法抓包了)

以上是全部内容,如果有疑问或者不对,又或者是有更好的解决办法,都可以在下面留言或者通过其他方式联系我~