第二篇博客——基于Flask的web微信

什么是Flask

以前用java的jsp写过网页,对Django有一些认知,但对Flask是闻所未闻。

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask版的hello world(hello.py):
1
2
3
4
5
6
7
8
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():    
    return "Hello World!"
 
if __name__ == "__main__":
    app.run()
安装flask即可运行了:
1
2
3
4
5
6
$ pip install Flask
 
$ python
hello.py* Running on http://localhost:5000/
 
*flask默认端口是5000


Flask与Django的区别:

1、Django是一款重量级的Python开发web框架,功能齐全,不同的人用Django来开发,开发出来的东西基本架构都是一样的,但是Flask是一个轻量级的web框架,相对来说更加灵活,每个人开发出来的东西架构可能完全不一样,
所以对于团队级别的大型项目来说,比较适合选择Django,因为整个团队比较容易达成一致的架构,不会陷入无休止的会议讨论,里面很多东西不需要自己设计,拿来即用,快速开发。
而对于个人开发的小项目来说,也可以用Django,也可以用Flask,用Flask的话,可以设计自己的项目架构,不必拘泥于Django的固定模式。但是对于经验少的开发者来说,这里就比较困难了
2、Flask对于加深Python学习有很大帮助,因为Flask不像Django很多东西都是现成的,需要自己去写
3、Django对新手来说比Flask容易上手,正是因为灵活性的原因


ajax请求:

了解了Flask后,要在网页中用到Jquery的ajax请求,又一次受到打击,再去学下Jquery。

ajax() 方法用于执行 AJAX(异步 HTTP)请求。

所有的 jQuery AJAX 方法都使用 ajax() 方法。该方法通常用于其他方法不能完成的请求。


看不懂它在说什么?但知道form表单怎么用,就先理解为它的刷新是在后台,而form表单是提交数据跳转到新界面。


web微信:

简而言之:它要什么你就去找什么

登陆页面:

def login():
    if request.method == 'GET':
        ctime = str(int(time.time() * 1000))
        qcode_url = "https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_={0}".format(ctime)

        ret = requests.get(qcode_url)
        qcode = re.findall('uuid = "(.*)";',ret.text)[0]
        session['qcode'] = qcode
        return render_template('login.html',qcode=qcode)
    else:
        pass


扫码登陆:

def check_login():
    """
    发送GET请求检测是否已经扫码、登录
    https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=QbeUOBatKw==&tip=0&r=-1036255891&_=1525749595604
    :return:
    """
    response = {'code':408}
    qcode = session.get('qcode')
    ctime = str(int(time.time() * 1000))
    check_url = "https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid={0}&tip=0&r=-1036255891&_={1}".format(qcode,ctime)
    ret = requests.get(check_url)
    if "code=201" in ret.text:
        # 扫码成功
        src = re.findall("userAvatar = '(.*)';",ret.text)[0]
        response['code'] = 201
        response['src'] = src
    return jsonify(response)


轮询机制:

概括来说是服务端定时主动的去与要监控状态的客户端(或者叫其他系统)通信,询问当前的某种状态,客户端返回状态信息,客户端没有返回或返回错误、失效信息、则认为客户端已经宕机,然后服务端自己内部把这个客户端的状态保存下来(宕机或者其他),如果客户端正常,那么返回正常状态,如果客户端宕机或者返回的是定义的失效状态那么当前的客户端状态是能够及时的监控到的,如果客户端宕机之后重启了那么当服务端定时来轮询的时候,还是可以正常的获取返回信息,把其状态重新更新。

写爬虫需要许多web知识,学会了再往下做。


展开阅读全文

没有更多推荐了,返回首页