- Python - 网络编程
- Python - 网络入门
- Python - 网络环境
- Python - 互联网协议
- Python - IP地址
- Python - DNS查询
- Python - 路由
- Python - HTTP请求
- Python - HTTP响应
- Python - HTTP报头
- Python - 自定义HTTP请求
- Python - 请求状态码
- Python - HTTP身份验证
- Python - HTTP数据下载
- Python - 连接重用
- Python - 网络接口
- Python - Socket编程
- Python - HTTP客户端
- Python - HTTP服务器
- Python - 构建URL
- Python - Web表单提交
- Python - 数据库和SQL
- Python - Telnet
- Python - 邮件信息
- Python - SMTP
- Python - POP3
- Python - IMAP
- Python - SSH
- Python - FTP
- Python - SFTP
- Python - Web服务器
- Python - 上传数据
- Python - 代理服务器
- Python - 目录列表
- Python - 远程过程调用
- Python - RPC JSON服务器
- Python - Google地图
- Python - RSS Feed
Python - HTTP请求
HTTP或超文本传输协议基于客户端-服务器模型。通常,Web浏览器是客户端,托管网站的计算机是服务器。在Python中,我们使用requests模块创建HTTP请求。这是一个非常强大的模块,可以处理HTTP通信的许多方面,不仅仅是简单的请求和响应数据。它可以处理身份验证、压缩/解压缩、分块请求等。
HTTP客户端以请求消息的形式向服务器发送HTTP请求,该请求消息包括以下格式:
- 请求行
- 零个或多个报头(通用|请求|实体)字段,后跟CRLF
- 空行(即,CRLF之前没有任何内容的行),表示报头字段的结束
- 可选的消息体
以下部分解释了HTTP请求消息中使用的每个实体。
请求行
请求行以方法标记开头,后跟请求URI和协议版本,最后以CRLF结尾。元素之间用空格SP字符分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
让我们讨论请求行中提到的每个部分。
请求方法
请求**方法**指示要对给定**请求URI**标识的资源执行的方法。该方法区分大小写,应始终以大写形式提及。下表列出了HTTP/1.1中所有支持的方法。
| 序号 | 方法和描述 |
|---|---|
| 1 | GET GET方法用于使用给定的URI从给定的服务器检索信息。使用GET的请求应该只检索数据,并且不应对数据产生任何其他影响。 |
| 2 | HEAD 与GET相同,但它只传输状态行和报头部分。 |
| 3 | POST POST请求用于将数据发送到服务器,例如,使用HTML表单的客户信息、文件上传等。 |
| 4 | PUT 将目标资源的所有当前表示替换为上传的内容。 |
| 5 | DELETE 删除URI给出的目标资源的所有当前表示。 |
| 6 | CONNECT 建立到由给定URI标识的服务器的隧道。 |
| 7 | OPTIONS 描述目标资源的通信选项。 |
| 8 | TRACE 执行消息环回测试以及到目标资源的路径。 |
请求URI
请求URI是统一资源标识符,它标识要对其应用请求的资源。以下是指定URI最常用的形式:
Request-URI = "*" | absoluteURI | abs_path | authority
| 序号 | 方法和描述 |
|---|---|
| 1 | 星号**\* **用于HTTP请求不适用于特定资源,而是适用于服务器本身的情况,并且仅当使用的方法不一定会应用于资源时才允许。例如: OPTIONS \* HTTP/1.1 |
| 2 | 当向代理服务器发出HTTP请求时,使用**absoluteURI**。请求代理服务器转发请求或从有效缓存中提供服务,并返回响应。例如: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
| 3 | 请求URI最常见的形式是用于标识原始服务器或网关上的资源。例如,希望直接从原始服务器检索资源的客户端将创建一个到主机“www.w3.org”的80端口的TCP连接,并发送以下行: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org 请注意,绝对路径不能为空;如果原始URI中不存在绝对路径,则必须将其指定为“/”(服务器根目录)。 |
使用Python requests
我们将使用requests模块来学习HTTP请求。
pip install requests
在下面的示例中,我们看到一个简单的GET请求案例,并打印出响应的结果。我们选择只打印前300个字符。
# How to make http request
import requests as req
r = req.get('https://tutorialspoint.com/python/')
print(r.text)[0:300]
运行上述程序后,我们将得到以下输出:
<!DOCTYPE html> <!--[if IE 8]><html class="ie ie8"> <![endif]--> <!--[if IE 9]><html class="ie ie9"> <![endif]--> <!--[if gt IE 9]><!--> <html> <!--<![endif]--> <head> <!-- Basic --> <meta charset="utf-8"> <title>Python Tutorial</title> <meta name="description" content="Python Tutorial