当前位置: 首页 > news >正文

python 实现 web 请求与相应

目录

一、 什么是 Web 请求与响应

1. web 请求

2. web 响应

3. http 协议概述

4. 常见的 http 状态码

二、 python 的 requests 库

1. 安装requests库

2. 发送 GET 请求

3. 发送 POST 请求

4. 处理响应头和状态码

5. 发送带查询参数的 GET 请求

6. 发送带表单数据的 POST 请求

三、 处理JSON 响应

四、 文件操作

1. 打开文件的模式

2. 读取文件

3. 写入文件

4. 文件操作中的注意事项

5. 其他常用文件操作

6. 错误处理与异常捕获


一、 什么是 Web 请求与响应

Web 请求与响应是 Web 通信的基础。Web 请求由客户端发起,服务器处理后返回响应。

1. web 请求

Web 请求通常包括以下几个部分:

  • 请求行:包括清求方法(如 GET、POST、PUT、DELETE)、URL和 HTTP 协议版本 (如 HTTP/1.1)。
  • 请求头:包含关于客户端信息、请求体类型、浏览器类型等的元数据。
  • 请求体:在 POST请求中包含用户提交的数据,如表单数据或文件。

2. web 响应

Web 响应由服务器返回,通常包括以下几个部分:

  • 响应行:包括 HTTP 协议版本、状态码和状态消息。
  • 响应头:包括关于响应的信息,如内容类型、服务器信息等。
  • 响应体:包含实际返回的数据(如 HTML页面、JSON数据等)。

3. http 协议概述

HTTP (Hypertext Transfer Protocol)是Web 上传输数据的协议,负责浏览器与服务器之间的通信。常见的 HTTP方法有:

  • GET:请求服务器获取资源,通常用于读取数据。
  • POST:提交数据到服务器,通常用于表单提交、文件上传等。
  • PUT:更新服多器上的资源。
  • DELETE:删除服务器上的资源。

4. 常见的 http 状态码

  • 200 OK:请求成功,服务器返回所请求的数据。
  • 301 Moved Permanently:资源已永久移动。
  • 404 Not Found:请求的资源不存在。
  • 500 Internal Server Error:服务器内部错误。

二、 python 的 requests 库

Python 的 requests 库是发送 HTTP 请求和处理响应的最常用工具,它提供了简单、直观的 API使得 Web请求和响应的操作变得非常容易。通过requests,我们可以轻松地发送 GET、POST请求处理JSON 响应,管理请求头等。

1. 安装requests库

更改国内安装源

pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip3 config set install.trusted-host mirrors.aliyun.com/pypi/simple
pip install --upgrade pip

在使用 requests 之前,我们需要先安装它。如果你没有安装,可以通过以下命令安装:

pip install requests

2. 发送 GET 请求

GET 请求通常用于获取数据。我们通过requests.get()来发送 GET 请求,并可以处理返回的响应。

import requests
# 发送 GET请求
response=requests.get('https://www.example.com')
# 输出响应的状态码
print('status Code:",response.status code)
#输出响应的内容
print("Response Body:",response.text)
#输出响应头
print("Response Headers:",response.headers)
# 获取响应内容的长度
print('Content Length:',len(response.text))

代码解释:

  • requests.get0用于发送 GET 请求,获取指定 URL的数据。
  • response.status code 获取 HTTP 响应状态码。
  • response.text 获取响应的正文内容(通常是HTML或JSON数据)。
  • response.headers 获取响应头。
  • len(response.text)返回响应正文的长度,帮助我们了解返回内容的大小。

3. 发送 POST 请求

POST 请求用于将数据提交到服务器,通常用于表单提交或上传文件。我们使用requests.post0)来发送 POST 请求。

import requests
# 发送 POST 请求
url='https://httpbin.org/post'
data ={'name':'Alice','age': 25}
response=requests.post(url,data-data)
#输出响应状态码
print('status Code:",response.status code)
#输出响应内容(JSON格式)
print('Response Body:',response.json())

代码解释:

  • requests.post()用于发送 POST请求,将数据提交到服务器。
  • data参数是一个字典,包含了我们要提交的数据。requests 会自动将其编码为application/x-www-fomm-urlencoded格式。
  • response.json(用于解析返回的 JSON 数据。

4. 处理响应头和状态码

响应头提供了关于服务器的信息,状态码则告诉我们请求是否成功。我们可以通过response.headers 获取响应头,通过response,status code 获取状态码。

import requests
#发送 GET请求
response=requests.get("https://www.example.com')
#获取响应头
print('Response Headers:",response.headers)
# 获取响应状态码
print('status Code:",response.status code)
# 获取内容类型
print('Content-Type:",response.headers.get('content-Type'))

代码解释:

  • response.headers 返回响应头,包含如 Content-Type、Date、Server 等信息
  • response.status code 返回 HTTP 状态码,
  • response.headers.get('Content-Type’)获取响应的内容类型 (如 text/html,application/json).

5. 发送带查询参数的 GET 请求

在 GET 请求中,我们可以通过 URL传递查询参数。例如,访问一个包含参数的 URL

import requests
#发送带查询参数的 GET请求
url ='https://httpbin.org/get
params={'name":'Alice',"age':25}
response=requests.get(url,paramsparams)
#输出响应内容
print('Response Body:",response.json())

代码解释:

  • params是一个字典,包含要传递的査询参数。requests.get()会自动将这些参数编码到 URL 中。

6. 发送带表单数据的 POST 请求

POST 请求可以用来提交表单数据,下面的例子展示了如何使用requests 发送带表单数据的POST 请求。

import requests
#发送带表单数据的 POST 请求
url ='https://httpbin.org/post
data={'username':'testuser','password': 'mypassword'}response=requests.post(url,data=data)
#输出响应的内容
print('Response Body:",response.json())

代码解释:

  • data 参数是一个字典,包含表单提交的数据,requests 会自动将数据编码为application/x-www-fomm-urlencoded格式。

三、 处理JSON 响应

许多 Web AP|返回的数据格式是JSON,Python的 requests 库提供了方便的JSON 处理方法

import requests
# 发送 GET请求并获取 JSON 响应
url="https://api.github.com/users/octocat
response=requests.get(url)
# 解析 JSON 数据
data=response.json()
#输出用户的 GitHub信息
print('user Login:", data['login'])
print('User Name:', data['name"])

代码解释:

  • response.json()将响应的内容解析为 Python 字典,方便我们处理 JSON数据

四、 文件操作

文件操作是 Python编程中常见的任务。Python提供了多种方法来读取、写入和管理文件,能够处理文本文件、二进制文件以及目录操作等。掌握文件操作的基础和技巧是高效编程的关键。

1. 打开文件的模式

Python使用内置的 open()函数来打开文件。打开文件时,我们需要指定文件模式(即操作文件的方式)。

(1) 常见的文件打开模式

  • r:只读模式(默认模式)。文件必须存在。如果文件不存在,会抛出 FileNotFoundError 异常。
  • w:写入模式。如果文件存在,会覆盖文件内容。如果文件不存在,会创建新文件。
  • a:追加模式。如果文件存在,写入的数据会追加到文件末尾;如果文件不存在,会创建新文件。
  • x:独占创建模式。若文件已存在,操作会失败并抛出 FileExistsError异常。此模式通常用于创建文件时防止覆盖现有文件。
  • rb:二进制读取模式,用于读取非文本文件(如图片、音频文件)。
  • wb:二进制写入模式,用于写入非文本文件。
  • r+:读写模式。文件必须存在。既可以读取文件内容,也可以写入数据。
  • w+:读写模式。如果文件存在,会覆盖文件内容;如果文件不存在,会创建新文件。
  • a+:读写模式。文件存在时,数据会追加到文件末尾;如果文件不存在,会创建新文件。
  • rb+:二进制读写模式。

2. 读取文件

Python中的文件读取功能非常强大。以下是几种常见的读取方式:

(1) read()方法

read()方法用于读职文件中的所有内容。读取后的内容会作为字符串返回。

with open('example.txt','r')as file:
content =file.read()
print(content)

(2)readline()方法

readline()方法每次读取一行文件内容,适用于需要逐行处理文件的情况,

with open('example.txt','r')as file:
line = file.readline()
while line:
print(line.strip())#strip()用来去除行末的换行符
line =file.readline()

(3) readlines()方法

readlines()方法会一次性读取文件中的所有行,并将每行数据存储为一个列表的元素,适用于需要读取整个文件并进行行处理的情况。

with open('example.txt','r')as file:
lines = file.readlines()
for line in lines:
print(line.strip())

3. 写入文件

Python提供了几种方法将数据写入文件。写入操作常用于日志记录、数据导出等场景。

(1) 使用 write()方法写入文件

write()方法将指定的字符串写入文件。若文件以 w模式打开,原文件内容会被覆盖;若以a模式打开内容会被追加到文件末尾。

with open('output.txt','w')as file:
file.write("这是第一行数据。\n")
file.write(“这是第二行数据。\n")

(2) 使用 writelines()方法写入多行数据

writelines()方法接受一个可选代对象(如列表、元组等),将其元素写入文件中,每个元素将作为一行写入文件。

lines =["第一行数据。\n","第二行数据。\n","第三行数据。\n",
with open('output.txt','w')as file:
file.writelines(lines)

4. 文件操作中的注意事项

在进行文件操作时,需要注意以下几个问题:

 文件是否存在

在打开文件时,必须确保文件路径正确。如果文件不存在,可以使用os.path.exists()检查文件是否存在,或者使用try-except捕获FileNotFoundError异常。

import os
if os.path.exists('example.txt"):
with open('example.txt','r')as file:content =file.read()
else:
print("文件不存在!")

 文件权限

在操作文件时,可能会遇到权限不足的问题。例如,尝试写入只读文件,或访问没有读取权限的文件。在这种情况下,可以使用try-except来捕获PermissionError 异常。

try:
with open('readonly file.txt', 'w')as file:
file.write("尝试写入只读文件")
except PermissionError:
print("杈限不足,无法写入文件。")

5. 其他常用文件操作

(1) 获取文件信息

Python提供了 os和os.path模块,可以获职文件的大小、修改时间等信息。

import os
file path ='example.txt'
print("文件大小:",os.path.getsize(file path),"字节”)print("文件修改时间:",os.path.getmtime(file_path))

(2) 删除文件

使用os.remove()可以删除文件:

import os
file path='example.txt"
if os.path.exists(file path):
os.remove(file path)
print(f"{file_path} 已删除!")
else:
print("文件不存在!")

6. 错误处理与异常捕获

在进行Web 请求时,可能会发生各种错误,例如网络超时、服务器错误等。requests 库通过异常处理机制帮助我们捕获这些错误。Python 的 try语句能够捕获和处理代码块中的异常,从而避免程序崩溃,并且提供了处理错误的机会。

(1) try 语句的使用

try语句用于捕获和处理异常,它由三部分组成:

  • try块:包含可能会引发异常的代码。当代码运行过程中发生错误时,程序会跳到相应的 except块进行处理。
  • except块:当 try块中的代码出现异常时,程序会跳转到except块执行。在except 中可以指定要捕获的异常类型,如 Timeout、HTTPError 等。
  • else 块(可选):如果try块中的代码没有抛出异常,则会执行 else块中的代码。
  • finally 块(可选):无论是否发生异常,finally 块中的代码都会执行,通常用于清理资源(如关闭文件、数据库连接等)。

相关文章:

  • NIFI的处理器:RouteOnContent 1.28.1
  • 车载软件架构 --- FLASH bootloader 设计要点
  • Accelerate 2025北亚巡展正式启航!AI智御全球·引领安全新时代
  • Nginx核心功能
  • 【朝花夕拾】S32K144 backdoor key解锁后劳德巴赫或者JLINK更新app
  • GraphRAG使用
  • Java集合再探
  • 3452. 好数字之和
  • Java 模块化系统(JPMS)
  • 4.2.4 Thymeleaf内置对象
  • 无人机避障——深蓝学院浙大栅格地图以及ESDF地图内容
  • Mybatis的基本结构和说明
  • 支持PAM特权账号管理和人脸识别,JumpServer开源堡垒机v4.10 LTS版本发布
  • 选择排序 Python实现
  • 深度学习之-目标检测算法汇总(超全面)
  • Java 系统属性深度解析:从 API 校验到实战应用
  • 右键长按超过 200ms, 高亮选中的typora内容, win+a换颜色
  • 文件IO操作、目录操作
  • 软件开发的设计原则
  • 技术篇-2.2.JAVA应用场景及开发工具安装
  • 宁波高端网站设计价格/3d建模培训学校哪家好
  • 谁做网站/深圳全网推广排名
  • 外国做问卷可以赚钱的网站/seo在线优化网站
  • 网络规划设计师教程(第2版)pdf/成都关键词优化服务
  • 全自动网站制作系统/百度关键词快排
  • 百度西安研发中心/站长工具seo综合查询网