Python Web概述

本文介绍了Python在Web开发中的应用,包括Web客户端和服务器端的知识。Python的标准Web库提供了处理HTTP请求和响应的工具,如http和urllib。文章还提到了requests库作为简化HTTP操作的替代方案。在Web服务端,讲解了Python的简易Web服务器以及WSGI接口,推荐了Bottle和Flask框架,并探讨了Apache和Nginx等服务器。此外,还涉及了Web服务自动化、Web API、JSON和网页抓取的相关内容。
摘要由CSDN通过智能技术生成

三个概念:

  • HTTP (超文本传输传输协议)
    规定了网络客户端和服务器之间如何交换请求和响应
  • HTML(超文本标记语言)
    结果的展示格式
  • URL(统一资源定位符)
    唯一表示服务器和服务器上资源的方法

一个最简单的场景:

一个Web客户端通过HTTP连接到一个Web服务器,请求一个URL,收到HTML。

Web客户端

互联网最底层的网络传输使用的是传输控制协议/因特网协议,更常用的叫法是TCP/IP。这些协议会在计算机之间传输字节,但是并不关心这些字节的含义,后者由更高层的协议——用于特定目的的语法定义——来处理。HTTP是Web数据交换的标准协议。

Web是一个客户端——服务器系统。客户端向服务器发起请求:它会创建一个TCP/IP连接,通过HTTP发送URL和其他信息并接收一个响应。

响应的格式也由HTTP定义。其中包括请求的状态以及(如果请求成功)响应的数据和格式。

Python的标准Web库

在Python2中,Web客户端和服务器模块结构都比较散乱。Python3的目标之一就是把这些模块打包成两个包

  1. http会处理所有客户端-服务器HTTP请求的具体细节:

    • client会处理处理客户端的部分
    • server会协助你编写Python Web服务器程序
    • cookies和cookiejar会处理cookie,cookie可以在请求中存储数据
  2. urllib是基于http的高层库:

    • request处理客户端请求
    • response处理服务器端的响应
    • parse会解析URL

例子

这里写图片描述

HTTP状态码:

  • 1xx(信息)
    服务器收到了请求,但是需要客户端发送一些额外的信息。
  • 2xx(成功)
    请求成功。除了200以外,其他的状态码还会包含一些特殊含义。
  • 3xx(重定向)
    资源位置发生改变,所以响应会返回一个新的URL给客户端。
  • 4xx(客户端错误)
    客户端发送错误,比如最出名的404(页面不存在)。
  • 5xx(服务端错误)
    500是最常见的错误。你可能也见到过502(网关错误),这表示Web服务器程序和后端的应用服务器之间无法连接。

响应的HTTP头:

  • Content-Type (MIME类型)
  • Set-Cookie(用来在多次访问之间追踪你的活动)

下面代码可以得到最终返回的数据是什么(不是HTTP首部的部分)

data = conn.read()
print(data)

抛开标准库:requests

pip install requests

在大多数情况下,使用requests可以让Web客户端开发变得更加简单。

例子

import requests
url = 'http://www.baidu.com'
resp = requests.get(url)
print(resp.text)

Web服务端

最简单的Python Web服务器

可以用一行Python代码启动一个简单的Web服务器
这里写图片描述

现在你可以通过相对路径来请求文件,它们会被Web服务器返回。如果你在Web浏览器中输入http://localhost:8000,会看到一个目录列表:
这里写图片描述

Web服务器会打印出下面这样的访问日志:
这里写图片描述
- 127.0.0.1<=>localhost是客户端的IP地址
- 第一个”-“是远程用户名,本例为空
- 第二个”-“是登陆用户名,本例中是可选的,为空
- [29/Jul/2017 16:30:26]是访问日期和时间
- “GET / HTTP/1.1”是指Web服务器收到的指令
- 最后的200表示Web服务器返回的HTTP状态码

默认的端口数是8000,你也可以指定其他的数字:

python -m http.server 9999

这个Python特有的Web服务器很适合用作快速测试。一定不要把这个简单的Web服务器用在真正的产品级网站中。Nginx和Apache等传统Web服务器可以更快地处理静态文件。此外,这个简单的Web服务器不能处理动态内容,其它更高端的Web服务器可以接收参数并返回动态内容。

关于0.0.0.0这个ip地址的含义

0.0.0.0 is not the URL you should be visiting. When a Python says it is serving on 0.0.0.0 it means it is listening for all TCP traffic that ends up at that machine no matter the hostname or IP that was requested.

But, if you c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值