本文介绍了如何使用Python的requests库来发送和处理HTTP请求,包括安装、基本的GET和POST请求、处理响应以及设置请求头等。文章详细讲解了如何使用request资料来获取和解析服务器返回的数据,并提供了多个示例代码帮助读者理解具体操作。此外,还讨论了错误处理和API请求的实际应用,帮助读者更好地掌握requests库的使用方法。
Python的request库简介requests
是一个用 Python 编写的第三方库,用于发送 HTTP 请求和接收响应,它是 Python 编程语言中最流行的 HTTP 库之一。这个库简化了发送 HTTP 请求的过程,提供了简洁和易用的接口,使开发者能够方便地与 Web 服务进行交互。
安装 requests
库可以使用 pip
工具,这是 Python 的包管理器。以下是在命令行中安装 requests
的步骤:
pip install requests
此命令会自动下载并安装最新的 requests
库到计算机中。请确保 Python 的环境变量已设置正确,以便 pip
命令可以被识别。
使用 requests
库发送 GET 请求的基本方法是使用 requests.get
函数。这个函数会返回一个 Response
对象,其中包含了从服务器接收到的所有响应数据。
import requests response = requests.get("https://www.example.com")
在上面的例子中,requests.get
函数向 https://www.example.com
发送了一个 GET 请求,并将响应存储在变量 response
中。
从服务器接收到的数据可以通过 Response
对象的属性来访问。例如,使用 .text
属性可以获取响应的文本内容。
import requests response = requests.get("https://www.example.com") content = response.text print(content)
通过调用 response.text
,可以获取服务器返回的 HTML 内容,然后通过 print
函数输出到终端。
发送 POST 请求的方法与 GET 请求类似,使用 requests.post
函数。POST 请求通常用于向服务器提交数据,例如表单提交。
import requests response = requests.post("https://www.example.com")
在这个例子中,requests.post
函数向 https://www.example.com
发送了一个 POST 请求。
POST 请求通常包含一些数据,这些数据可以用字典的形式传递给 requests.post
函数。这些数据通常会以 application/x-www-form-urlencoded
或 multipart/form-data
格式发送。
import requests data = {"key": "value"} response = requests.post("https://www.example.com", data=data)
此代码示例向 https://www.example.com
发送了一个 POST 请求,并附带了一个名为 key
的表单字段,其值为 value
。
HTTP 响应通常包含一个状态码,它表示请求是否成功。状态码 200 表示请求成功,404 表示未找到资源,500 表示服务器错误等。
import requests response = requests.get("https://www.example.com") status_code = response.status_code print("Status code:", status_code)
此代码示例中,通过 response.status_code
获取响应的状态码并打印出来。
HTTP 响应的文本内容可以通过 .text
属性获取,JSON 格式的响应数据可以通过 .json()
方法转换为 Python 的字典对象。
import requests response = requests.get("https://api.example.com/data") json_data = response.json() print(json_data)
此代码示例中,.json()
方法将响应的内容解析为字典,并打印出来。
在某些情况下,需要向 HTTP 请求添加自定义的请求头(Headers)。requests
库允许通过 headers
参数传递一个字典,以便添加额外的头信息。
import requests headers = {"User-Agent": "MyCustomUserAgent"} response = requests.get("https://www.example.com", headers=headers)
此代码示例中,headers
参数用于设置一个名为 User-Agent
的自定义头信息。
可以通过设置 Accept
或 Content-Type
请求头来控制服务器返回的内容类型,例如,使用 Accept
来指定客户端期望接收的数据类型。
import requests headers = {"Accept": "application/json"} response = requests.get("https://api.example.com/data", headers=headers)
此代码示例中,通过 Accept
请求头指定客户端期望接收 JSON 格式的数据。
使用 requests
库时可能会遇到多种错误类型,包括网络错误、HTTP 错误等。常见的错误类型有:
ConnectionError
:网络连接失败HTTPError
:服务器返回一个错误状态码Timeout
:请求超时TooManyRedirects
:重定向次数过多MissingSchema
:请求 URL 缺少模式(如 http 或 https)为了使代码更加健壮,可以使用 try-except
语句来捕获并处理这些异常。
import requests try: response = requests.get("https://www.example.com") response.raise_for_status() # 如果响应状态码不是 200,则抛出异常 except requests.exceptions.RequestException as e: print(f"An error occurred: {e}")
此代码示例中,try-except
结构用于捕获所有 requests
库引发的异常。response.raise_for_status()
方法会抛出一个异常,如果响应的状态码不是 200。
以下是一个完整的示例,演示如何使用 requests
库从一个公开的天气 API 获取数据。
假设有一个公开的天气 API,可以通过以下步骤获取天气数据:
requests
库。import requests def get_weather_data(): url = "https://api.openweathermap.org/data/2.5/weather?q=Beijing&appid=your_api_key" response = requests.get(url) if response.status_code == 200: json_data = response.json() return json_data else: print(f"HTTP Error {response.status_code}") return None weather_data = get_weather_data() print(weather_data)
此代码示例中,get_weather_data
函数向天气 API 发送一个 GET 请求,并返回解析后的 JSON 数据。如果响应状态码不是 200,则打印错误信息并返回 None
。
在 Python 中,变量是用来存储数据的容器。Python 是一种动态类型语言,这意味着变量的类型可以在运行时自动推断出来。Python 中有几种基本的数据类型,包括整型、浮点型、字符串和布尔型。
# 整型 integer = 123 print(type(integer)) # 浮点型 floating_point = 123.456 print(type(floating_point)) # 字符串 string = "Hello, world!" print(type(string)) # 布尔型 boolean = True print(type(boolean))
此代码示例展示了如何定义不同类型的变量,并使用 type
函数来获取它们的类型。
变量可以在程序中被重新赋值,它们的类型也会相应地改变。以下是一些关于变量赋值和类型转换的例子。
# 变量赋值 a = 10 print(a) a = "Hello" print(a) # 类型转换 num = 123 str_num = str(num) print(type(str_num)) # 使用变量进行计算 b = 5 result = a + str(b) print(result)
此代码示例中,变量 a
的类型从整型变为字符串。str()
函数用于将整型变量 num
转换为字符串。最后,变量 a
和 b
通过加号连接成一个新的字符串。