zoukankan      html  css  js  c++  java
  • Python 学习笔记(基础语法 restful 、 Flask 和 Requests)

    input 函数

    #!/usr/bin/env python3
    name = input("
    
    按下 enter 键后退出。")
    print(name)
    

    print() 在 python3 中是一个函数

    a = 1
    b = 2
    c = 3
    print(a)
    print(b)
    print(c)
    
    d= 100.14
    print(d)
    
    name = "liwei"
    print(name)
    

    print("hello python")

    定义变量

    a = 10
    b = 2
    c = a + b
    print(a)
    print(b)
    print(c)

    判断语句

    score = 80
    if score >= 90:
    print("优秀")
    elif score >= 60:
    print("及格")
    elif score >= 30:
    print("不及格")
    else:
    print("很差劲了")

    注意事项:

    1、分号的位置
    2、每一行都有缩进
    3、elif
    4、else 后面有分号

    循环

    for i in range(0,100):
    print(i)

    循环的扩展(字符格式化)

    for i in range(0,10):
    print("Hello {0},{1}".format(i,"liwei zhouguang"))

    定义函数

    def hello():
    print("测试方法")

    hello()

    注意事项:

    1、使用 def 定义函数;
    2、方法名后面跟括号和冒号;
    3、调用方法的时候不要缩进

    带有参数的函数


    curl (一个 Get 方式的网址地址)

    restful 设计理念:表现层状态转移

    资源:网络上的具体信息
    URI:抽象概念,统一资源标识符
    URL:具体概念,统一资源定位器

    状态转移:
    (1)HTTP 协议是一个无状态的协议
    所有的状态都要保存在服务器端。
    (2)GET、POST、PUT、DELETE
    (3)让我们来看一个 RESTFUL 的请求
    curl -X GET (一个 GET 方式的网址)

    REST 构架设计 6 原则
    1、
    2、无状态
    3、
    4、
    5、
    6、按需编码

    flask 非常容易上手,是一个 python 微型的 web 框架
    flask.pocoo.org
    中文版本的文档:
    http://docs.pythontab.com/flask/flask0.10/api.html
    http://docs.jinkan.org/docs/flask/
    如果有非常浓厚的兴趣,可以自己查看官网文档进行学习。

    扩展的部分:http://flask.pocoo.org/extensions/

    编写下面这段代码就可以运行一个小小的服务了,这是一个最最简单的使用 python 写的 python 程序

    pycharm 里面要新建 flask 模块才可以。

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return 'Hello liwei!'
    
    
    if __name__ == '__main__':
        app.run()
    

    服务器运行是这样的:

    我们使用 curl 工具去访问这个服务,浏览器显示:

    以 debug 方式运行这个最最简单的 python 写的 web程序

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        a = 1
        b = 'a'
        c = a + b
        return 'Hello liwei!'
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    此时,浏览器会显示错误信息,如图所示。

    flask console lock 这个问题没有解决。

    编写一个最最简单的,具有 restful 风格的 URL,是不是觉得和 SpringMVC 的功能是一样的呢?但是 python 简单得多

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route("/index/<user>")
    def hello_world(user):
        print('你好 %s' % user)
        return '%s ,welcome' % user
    
    
    if __name__ == '__main__':
        app.run()
    
    curl -X GET http://127.0.0.1:5000/index/liwei
    

    此时,控制台显示:

    四种 http 方法的设置,对比 Spring MVC 是不是特别简单?

    from flask import Flask
    
    app = Flask(__name__)
    # 我们修改一下路由
    @app.route('/index/<user>',methods=['POST','DELETE'])
    def hello_world(user):
        return 'Hello %s!' % user
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    此时,使用浏览器访问 URL 已经不好使了,我们可以通过 postman 或者 curl 这样的工具发送 post 请求。

    使用 curl 工具这样访问:

    curl -X POST  http://127.0.0.1:5000/index/liwei
    

    此时,终端显示:

    Chrome 开发者工具介绍
    如何使用 Requests 浏览 http 文档。
    用 Python 编写,真正的为人类着想。
    中文文档地址:
    http://cn.python-requests.org/zh_CN/latest/

    安装 pip 命令,这个命令相当于 Java 的 Maven、Gradle 工具

    切换用户到 root,执行命令 su,输入密码。

    然后执行

    sudo easy_install pip
    

    就安装好了。

    pip install requests
    

    可以安装 requests 模块了。

    passwd 可以设置我本机的密码。

    使用 requests 这个模块

    import requests
    
    r = requests.post("http://127.0.0.1:5000/index/liwei")
    r.text
    

    返回的结果是:

    接下来,我们在服务端,把客户端的请求信息打印一下:

    注意:这里不要写成 requests 了。

    很神奇的是,我们发现请求头是 python 的请求头:

    127.0.0.1 - - [30/Apr/2017 10:54:21] "POST /index/liwei HTTP/1.1" 200 -
    Content-Length: 0
    User-Agent: python-requests/2.13.0
    Connection: keep-alive
    Host: 127.0.0.1:5000
    Accept: */*
    Accept-Encoding: gzip, deflate
    

    如图所示:

    这样很容易被发现是 爬虫的请求头 。
    我们可以在客户端设置一个 User-Agent ,进行伪装,代码如下:

    import requests
    
    headers = {'User-Agent':"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"}
    r = requests.post("http://127.0.0.1:5000/index/liwei",headers=headers)
    print type(r.text)
    

  • 相关阅读:
    ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
    彻底理解webservice SOAP WSDL
    5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
    5天玩转C#并行和多线程编程 —— 第一天 认识Parallel
    Data Leakage 因果性
    一张图,关于 Bayes error rate,贝叶斯错误率等的分析
    玩转Node.js单元测试
    Fundebug上线Node.js错误监控啦
    聊聊"jQuery is not defined"
    深究WeixinJSBridge未定义之因
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/6790151.html
Copyright © 2011-2022 走看看