我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用Python写一个简单公众号

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用Python写一个简单公众号

  前言:虽然简单,但是稍稍还是有点可取的地方的,终于可以有一个可以作为项目放在自己的github上了T_T,一个好项目一定是可拔插好扩展的,离好项目至少60%吧,以后再进一步完善了。

   说实话,有一个微信公众号还是蛮方便的,可以将一些自己常用的功能(当然了,这些功能也可以包括工作相关的,不过现在没上班ing)全部集成在公众号里面,这样输入关键字就可以让一些自己总是重复的事情交给自己的代码实现了,其实本来也是想给自己父母集成的微信公众号。

    首先瞧瞧效果图。

    ps:争取以后做成H5网站的只要点击就可以了,而不是关键字,因为输入关键字对于老一辈还是会太麻烦,再者这些功能也好不够贴近痛点。

wKioL1dczj_hwpFBAABfAnxu_HQ188.png-wh_50wKioL1dczkCih6x5AACBwYAxuC4766.png-wh_50wKiom1dczTKzwmlYAAB-aa26nOQ991.png-wh_50


    好吧,进入主题。

    首先简单说明一下步骤,做一个摘要。

    1.注册微信公众号

    2.服务器配置

    3.代码内容解析

注册微信公众号

    注册一个微信公众号,免费的固然好不过功能是在太少,但是就自己用也足够了。

    注册地址:https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN

wKiom1dczWDgC_LRAAEP7DULn6s859.png-wh_50

    注册还是蛮简单的,仅需要一个邮箱以及×××正反面。具体步骤可参考:http://jingyan.baidu.com/article/6525d4b134051eac7d2e9417.html

    注:如果是为了查询用,建议选择服务号,如果定期发送文章什么的,就选订阅号吧。


服务器配置

    这里的服务器指两部分,一是代码所在服务器配置,二是微信公众号上的配置。

    首先看代码所在服务器配置,这里选择flask框架。至于服务器,无论选择各云厂商的云主机还是公司公网映射,抑或免费的云空间都是可取的,唯一的要求就是需要一个可访问的url以及可以运行Python代码。。

    参考:https://mp.weixin.qq.com/wiki

       http://my.oschina.net/yangyanxing/blog/159215    

    

安装flask

pip install flask

代码如下

#coding:utf-8
from flask import Flask,render_template,request,make_response
import time
import hashlib
import xml.etree.ElementTree as ET
@app.route("/wechat",methods = ["GET","POST"])
def wechat_auth():
    if request.method == 'GET':
        if len(request.args) > 3:
            token = 'xxxxxxx'
            query = request.args
            signature = query['signature']
            timestamp = query['timestamp']
            nonce = query['nonce']
            echostr = query['echostr']
            s = [timestamp, nonce, token]
            s.sort()
            s = ''.join(s)
            sha1str = hashlib.sha1(s).hexdigest()
            if sha1str == signature:
                return make_response(echostr)
            else:
                return make_response("认证失败")
        else:
            return "认证失败"

保存为myapp.py

然后在当前目录新建一个manager.py文件

from myapp import app
app.debug = True
app.run()

运行manager.py文件

python manager.py


访问127.0.0.1:5000/wechat,显示如下

wKioL1dczq6gL1R_AABAsZXvIxg100.png-wh_50

注意:上面的token令牌,那是自定义的,随便什么字符,不过微信与服务器上的配置要一样。

    还有就是flask的部署建议是通过nginx部署,不过你直接python manager.py 也不会有太大问题。

    Flask+WSGI+Nginx部署,

    参考: http://www.cnblogs.com/Ray-liang/p/4173923.html

    

    在微信公众号注册成功后,选择开发--->基本配置---->修改配置

wKioL1dczs-D5I0ZAADfYLNMuLw167.png-wh_50

    URL填入自己的URL,Token配置成跟代码一致,EncodingAESK点击随机生成即可,加密方式兼容。最后点击提交。提示提交成功即通过。


代码内容解析

    为了省略篇幅就不把源码全部粘贴进来了,有兴趣的访问https://github.com/youerning/pywechat/

    接下来我们就可以写功能部分了,主要讲解一下思路,以及现在以现在水平看来还不错的部分。

    

    一:抽离重用的部分

    将处理用户发过的文本的函数以及实现功能的类放在一个单独的模块handler,resp中。

    如下:

from handler import RequestTextGet,TextHandler,Menu
from resp import TextResp

    

    二:方法调用

    通过python中非常有用的方法减少代码量

    如下:

    def Get(self,Action,*args):
        if Action in MenuCode: Action = MenuCode[Action]
        Func = getattr(self,Action,None)
        if callable(Func):self.Ret = Func(*args)


通过getattr函数判断时候存在相应的类方法,没有则返回None,这样就不需要写if判断语句或者try了,如果可callable就直接调用。

    

    三:装饰器

    因为用户的输入是不可信的,所以需要将不需要的参数以及多余的内容过滤出去。

    比如,笑话不需要传入参数,你输入个"笑话 xxx xxx"那么我服务端一定报错,说参数传多了,但是不是每个方法都是不需要参数的,总得来说,我需要一个函数解决参数的问题,通过配置这个函数和的参数就可以控制传入的参数个数。

    如下:

def ArgsConfig(Args=1):
    def deco(func):
        @wraps(func)
        def wrap(self,*args,**kwargs):
            args = args[:Args]
            ret = func(self,*args,**kwargs)
            return ret
        return wrap
    return deco

使用如下:

      @ArgsConfig(0)
    def xh(self):
        #XHResp = requests.get("http://www.qiushibaike.com/text/")
        randp = randint(1,6)
        Payload = {"page":randp}
        XHResp = requests.get("http://www.walxh.com/pc/hot/",params=Payload)
        #XHRet = re.findall(r"""<div class="content">(\s*.*\s*)</div>""",XHResp.content)
        XHRet = re.findall("""<p>(.*?)</p>""",XHResp.content)
        num = randint(0,len(XHRet))
        Ret = XHRet[num]
        return Ret

    

后记:扩展性不是很好,以及天气,翻译功能需要依赖其他API,但是做成爬虫维护成本又可能变大。虽然这个项目至多达到一个及格项目的30%,等我写完另一个项目在继续吧,话说在家百无聊赖呀,哈哈。

    


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用Python写一个简单公众号

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python写一个简单公众号

前言:虽然简单,但是稍稍还是有点可取的地方的,终于可以有一个可以作为项目放在自己的github上了T_T,一个好项目一定是可拔插好扩展的,离好项目至少60%吧,以后再进一步完善了。   说实话,有一个微信公众号还是蛮方便的,可以将一些自己常
2023-01-31

用Python编写一个简单的Http S

原文地址:Write a simple HTTP server in Python http://www.acmesystems.it/python_httpd 例子中源码: https://github.com/tanzilli/play
2023-01-31

Python编写一个简单计算器

一个计算器最主要的功能是加减乘除,那么用 Python 可以怎样实现呢#!/usr/bin/env python# -*- coding:utf-8 -*-# @Time : 2018/1/22 22:29# @Author : z
2023-01-31

教你使用Python写一个简单的JSONParser

这篇文章主要介绍了教你使用Python写一个简单的JSONParser,它的整个效果,有点类似于python标准库json的json.load()方法,需要的朋友可以参考下
2023-05-14

如何用python写一个简单的find命

对一个运维来说可能会经常去查找目录下的一些文件是否存在,最常用的就是find命令,它不仅可以查找文件也可以查找目录,find命令用法查找文件[root@node1 opt]# find /usr/ -type f -name df/usr/
2023-01-31

如何使用Python写一个简单的JSONParser

本篇内容主要讲解“如何使用Python写一个简单的JSONParser”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Python写一个简单的JSONParser”吧!JSON Token
2023-07-06

用python写一个简单的倒计时软件

模块:timeimport timecount = 0a = int(input('time:'))while (count < a): count_now = a - count print(count_now) tim
2023-01-31

怎么用Python编写一个简单的游戏

本篇内容介绍了“怎么用Python编写一个简单的游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在这个系列中,我们要用不同的编程语言编写相
2023-06-15

如何用Python写一个简单的Web框架

如何用Python写一个简单的Web框架,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、概述在Python中,WSGI(Web Server Gateway
2023-06-17

利用Python编写一个简单的缓存系统

今天来做一个最简单的例子,利用写一个最简单的缓存系统,以key``value的方式保持数据,并且需要将内容中的数据落地到文件,以便下次启动的时候,将文件的内容加载进内存中来,感兴趣的可以了解一下
2023-05-16

python写一个简单的俄罗斯方块

# teris.py# A module for game teris.# By programmer FYJfrom tkinter import *from time import sleepfrom random import *fr
2023-01-31

Python写一个简单的api接口的实现

本文主要介绍了Python写一个简单的api接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-14

如何使用C++编写一个简单的医院挂号系统?

如何使用C++编写一个简单的医院挂号系统?随着社会的进步和人们生活水平的提高,医疗服务的需求也变得越来越迫切。为了提高医疗服务的效率和便利性,许多医院开始采用电子化挂号系统。这篇文章将向您介绍如何使用C++编写一个简单的医院挂号系统。首先,
如何使用C++编写一个简单的医院挂号系统?
2023-11-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录