优秀的编程知识分享平台

网站首页 > 技术文章 正文

【干货】Python中的requests库是如何进行HTTP请求

nanyue 2024-10-03 23:39:03 技术文章 15 ℃

HTTP协议是超文本传输协议(HyperText Transfer Protocol)的缩写,它是一种基于TCP协议的应用层传输协议,用于在客户端和服务器之间进行数据交换。HTTP协议的特点有:

  • 简单:HTTP协议的语法和结构都很简单,易于实现和扩展。
  • 灵活:HTTP协议可以传输任意类型的数据,包括文本、图片、音频、视频等。
  • 无状态:HTTP协议是无状态的,即每个请求都是独立的,服务器不会保存客户端的任何信息,这样可以减少服务器的负担,但也增加了应用层的复杂度。
  • 有连接:HTTP协议是基于TCP连接的,每个请求都需要建立一个TCP连接,并在请求完成后关闭连接,这样可以保证数据的可靠性,但也增加了网络开销。

HTTP协议的工作流程一般如下:

  • 客户端向服务器发送一个请求报文,包含请求方法、请求地址、请求头和请求体等信息。
  • 服务器接收到请求后,根据请求内容进行处理,并返回一个响应报文,包含状态码、响应头和响应体等信息。
  • 客户端接收到响应后,根据状态码判断请求是否成功,并根据响应头和响应体进行相应的处理。

Python中的requests库是一个常用的HTTP请求库,它可以方便地向网站发送HTTP请求,并获取响应结果。requests库比urllib库更简洁,可以节省我们大量的工作。

使用requests库发送HTTP请求需要先导入requests模块:

import requests

然后使用requests提供的方法向指定URL发送HTTP请求,例如:

# 发送GET请求
response = requests.get('http://httpbin.org/get')
# 发送POST请求
response = requests.post('http://httpbin.org/post', data={'key': 'value'})
# 发送PUT请求
response = requests.put('http://httpbin.org/put', data={'key': 'value'})
# 发送DELETE请求
response = requests.delete('http://httpbin.org/delete')

每次调用requests请求之后,会返回一个response对象,该对象包含了具体的响应信息,如状态码、响应头、响应内容等。我们可以通过以下方式获取这些信息:

# 获取响应状态码
print(response.status_code)
# 获取响应头
print(response.headers)
# 获取响应内容(字节串)
print(response.content)
# 获取响应内容(字符串)
print(response.text)
# 获取响应内容(JSON对象)
print(response.json())

如果需要设置请求头或者查询参数等信息,可以使用以下方式:

# 设置请求头
headers = {'User-Agent': 'Mozilla/5.0'}
# 设置查询参数
params = {'key1': 'value1', 'key2': 'value2'}
# 发送带有请求头和查询参数的GET请求
response = requests.get('http://httpbin.org/get', headers=headers, params=params)
最近发表
标签列表