Python 基础入门 Day13

欢迎来到 Python 基础入门 Day13!昨天我们学习了 Python 的网络编程,介绍了如何使用 socket 模块实现 TCP 和 UDP 通信。今天,我们将深入探讨 Python 中用于处理 网络请求 的强大模块 —— requests。这个模块是 Python 中最流行的第三方库之一,它简化了 HTTP 请求的处理,让我们更轻松地与 Web 进行交互。


目录

  1. 什么是 HTTP 协议?
  2. 安装 requests 模块
  3. 发送 HTTP 请求
  4. 处理请求响应
  5. 常见的请求方法
  6. 发送请求时的其他选项
  7. 异常处理
  8. 小结与练习

一、什么是 HTTP 协议?

HTTP(Hypertext Transfer Protocol)是 Web 上的主要通信协议。它定义了客户端(通常是浏览器)与服务器之间如何传输文本、图像、视频等数据。HTTP 协议有几种常用的请求方法:

  • GET:请求获取资源(默认)。
  • POST:提交数据到服务器。
  • PUT:更新资源。
  • DELETE:删除资源。

二、安装 requests 模块

在使用 requests 模块之前,我们需要确保已经安装了它。使用以下命令进行安装:

pip install requests

注意:通常 requests 模块会预装在大部分 Python 环境中,如果你遇到 ModuleNotFoundError,再执行上述命令安装即可。


三、发送 HTTP 请求

使用 requests 模块发送 HTTP 请求非常简单。以下是一个基本示例:

import requests response = requests.get('https://jsonplaceholder.typicode.com/posts/1') print(response.text)

  • 解释
  • requests.get(url):发送 GET 请求到指定 URL。
  • response.text:返回响应内容(字符串形式)。

输出结果

{ "userId": 1, "id": 1, "title": "sample title", "body": "This is a sample post content." }


四、处理请求响应

4.1 获取响应的各种信息

我们可以从响应对象中获取更多详细信息:

print(response.status_code) # 状态码 print(response.headers) # 响应头 print(response.json()) # JSON 格式的数据(字典) print(response.url) # 请求的 URL

4.2 常见的状态码

  • 200:请求成功。
  • 404:请求的资源未找到。
  • 500:服务器内部错误。

五、常见的请求方法

5.1 GET 请求

params = {'userId': 1} response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params) print(response.json())

  • 解释
  • params 参数用于传递 URL 查询字符串。

5.2 POST 请求

data = {'title': 'New Post', 'body': 'This is the content', 'userId': 1} response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data) print(response.json())

  • 解释
  • json 参数用于发送 JSON 格式的请求体。

5.3 PUT 请求

update_data = {'title': 'Updated Title'} response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=update_data) print(response.json())

5.4 DELETE 请求

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1') print(response.status_code)


六、发送请求时的其他选项

6.1 自定义请求头

headers = {'User-Agent': 'my-app/0.0.1'} response = requests.get('https://httpbin.org/headers', headers=headers) print(response.json())

6.2 文件上传

files = {'file': open('example.txt', 'rb')} response = requests.post('https://httpbin.org/post', files=files) print(response.json())

6.3 超时设置

response = requests.get('https://httpbin.org/delay/5', timeout=3) # 3 秒超时

注意:如果请求超过了指定的 timeout 时间,将抛出 requests.exceptions.Timeout 异常。

6.4 处理 Cookies

response = requests.get('https://httpbin.org/cookies', cookies={'mycookie': 'value'}) print(response.json())


七、异常处理

在处理网络请求时,可能会遇到各种异常情况,例如网络超时、服务器无响应等。可以通过 try-except 语句进行捕获:

try: response = requests.get('https://httpbin.org/status/404') response.raise_for_status() # 如果响应状态码是 4xx/5xx,将抛出异常 except requests.exceptions.HTTPError as errh: print("Http Error:", errh) except requests.exceptions.ConnectionError as errc: print("Error Connecting:", errc) except requests.exceptions.Timeout as errt: print("Timeout Error:", errt) except requests.exceptions.RequestException as err: print("OOps: Something Else", err)


八、小结与练习

今天我们学习了如何使用 Python 的 requests 模块 发送和处理 HTTP 请求。这个模块对于 Web 爬虫、API 调用以及网络数据处理非常有用。希望通过这些示例,你可以更熟练地操作网络请求。

今日练习题:

  1. 使用 requests 模块获取一个公开 API(如 GitHub API)上的用户信息。
  2. 编写一个 Python 脚本,使用 POST 方法提交数据并验证响应。
  3. 使用 requests 模块下载一张图片并保存到本地。

下一节预告:在 Day14 中,我们将介绍 Python 的 Web 爬虫技术,带你深入了解如何从网络上自动提取数据。敬请期待!


希望这篇文章对你有所帮助!祝你学习愉快 😊。如果有任何问题或建议,请随时留言。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注