- 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-套接字编程
- Python-HTTP 客户端
- Python-HTTP 服务器
- Python - 构建 URL
- Python - Web表单提交
- Python - 数据库和 SQL
- Python-远程登录
- Python - 电子邮件消息
- Python-SMTP
- Python-POP3
- Python-IMAP
- Python-SSH
- Python-FTP
- Python-SFTP
- Python - Web 服务器
- Python-上传数据
- Python-代理服务器
- Python - 目录列表
- Python-远程过程调用
- Python - RPC JSON 服务器
- Python - 谷歌地图
- Python - RSS 源
Python - HTTP 请求
http 或超文本传输协议适用于客户端服务器模型。通常网络浏览器是客户端,托管网站的计算机是服务器。在 python 中,我们使用 requests 模块来创建 http 请求。它是一个非常强大的模块,除了简单的请求和响应数据之外,还可以处理 http 通信的许多方面。它可以处理身份验证、压缩/解压缩、分块请求等。
HTTP客户端以请求消息的形式向服务器发送HTTP请求,请求消息包括以下格式:
- 请求行
- 零个或多个标头(常规|请求|实体)字段,后跟 CRLF
- 空行(即 CRLF 之前没有任何内容的行)指示标头字段的结尾
- 可选的消息正文
以下部分解释了 HTTP 请求消息中使用的每个实体。
请求行
请求行以方法令牌开头,后跟请求 URI 和协议版本,并以 CRLF 结尾。元素由空格 SP 字符分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
让我们讨论请求行中提到的每个部分。
请求方式
请求方法指示对给定Request-URI标识的资源执行的方法。该方法区分大小写,并且应始终以大写形式提及。下表列出了 HTTP/1.1 中支持的所有方法。
序列号 | 方法及说明 |
---|---|
1 | 得到 GET 方法用于使用给定 URI 从给定服务器检索信息。使用 GET 的请求应该只检索数据,而不应该对数据产生其他影响。 |
2 | 头 与 GET 相同,但它仅传输状态行和标头部分。 |
3 | 邮政 POST 请求用于使用 HTML 表单向服务器发送数据,例如客户信息、文件上传等。 |
4 | 放 将目标资源的所有当前表示替换为上传的内容。 |
5 | 删除 删除 URI 给出的目标资源的所有当前表示。 |
6 | 连接 建立到由给定 URI 标识的服务器的隧道。 |
7 | 选项 描述目标资源的通信选项。 |
8 | 痕迹 执行消息环回测试以及目标资源的路径。 |
请求URI
Request-URI 是统一资源标识符,标识要应用请求的资源。以下是指定 URI 的最常用形式:
Request-URI = "*" | absoluteURI | abs_path | authority
序列号 | 方法及说明 |
---|---|
1 | 当 HTTP 请求不应用于特定资源而是应用于服务器本身时,使用星号* ,并且仅当所使用的方法不一定应用于资源时才允许使用。例如:
选项 * HTTP/1.1 |
2 | 当向代理发出 HTTP 请求时,将使用absoluteURI。请求代理从有效的缓存中转发请求或服务,并返回响应。例如:
获取 http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | Request-URI 最常见的形式是用于标识源服务器或网关上的资源。例如,希望直接从源服务器检索资源的客户端将创建到主机“www.w3.org”的端口 80 的 TCP 连接,并发送以下行:
获取 /pub/WWW/TheProject.html HTTP/1.1 主办方:www.w3.org 注意绝对路径不能为空;如果原始 URI 中不存在,则必须以“/”(服务器根)形式给出。 |
使用Python请求
我们将使用 requests 模块来学习 http 请求。
pip install requests
在下面的示例中,我们看到一个简单的 GET 请求并打印出响应结果的情况。我们选择仅打印前 300 个字符。
# How to make http request import requests as req r = req.get('http://www.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