HTTP(超文本传输协定)是一个用于传输超文本(如HTML页面)的协定,它运行在TCP/IP协定族之上。HTTP协定定义了客户端(通常是Web浏览器)与服务器之间的通信形式。在本节中,咱们将学习HTTP协定的基本概念并相熟Python中常见的HTTP库,例如requestsurllib

HTTP协定基本概念

  1. URL(对立资源定位符):用于定位互联网上资源的地址。例如:https://www.example.com/index.html
  2. 申请与响应:HTTP协定通信基于申请-响应模型。客户端发送申请,服务器响应申请并返回数据。
  3. 办法:HTTP申请有多种办法,如GET、POST、PUT、DELETE等,用于形容申请操作的类型。例如,GET用于获取资源,POST用于发送数据。
  4. 状态码:HTTP响应蕴含一个状态码,用于示意申请是否胜利。例如,200示意胜利,404示意未找到资源。
  5. 申请头和响应头:HTTP申请和响应能够蕴含头部信息,用于提供额定的元数据。例如,Content-Type示意数据的MIME类型。

Python中的HTTP库

requests

requests是一个弱小且易用的Python HTTP库。首先,须要装置requests库:

pip install requests

上面是一个应用requests库发送GET申请的示例:

import requestsresponse = requests.get('https://www.example.com')print(response.status_code)  # 输入状态码,例如:200print(response.text)  # 输入响应文本

发送POST申请:

import requestsdata = {'key': 'value'}response = requests.post('https://www.example.com', data=data)print(response.status_code)  # 输入状态码print(response.text)  # 输入响应文本

解决JSON数据:

import requestsresponse = requests.get('https://api.example.com/data')print(response.status_code)  # 输入状态码# 将响应内容解析为Python字典data = response.json()print(data)

urllib

urllib是Python规范库中的一个模块,提供了解决URLs(次要是HTTP)的一系列性能。上面是一个应用urllib发送GET申请的示例:

from urllib import requesturl = 'https://www.example.com'response = request.urlopen(url)print(response.status)  # 输入状态码,例如:200print(response.read().decode('utf-8'))  # 输入响应文本

发送POST申请:

from urllib import request, parseurl = 'https://www.example.com'data = {'key': 'value'}data_encoded = parse.urlencode(data).encode('utf-8')  # 编码POST数据response = request.urlopen(url, data=data_encoded)print(response.status)  # 输入状态码print(response.read().decode('utf-8'))  # 输入响应文本

解决JSON数据:

import jsonfrom urllib import requesturl = 'https://api.example.com/data'response = request.urlopen(url)print(response.status)  # 输入状态码# 将响应内容解析为Python字典data = json.loads(response.read().decode('utf-8'))print(data)

本节介绍了HTTP协定的基本概念以及Python中的requestsurllib库。理论开发中,举荐应用requests库,因为它更加简洁和易用。通过本节的学习,你应该能够编写简略的Python网络程序,并理解如何发送HTTP申请和解决响应。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g