python实现web请求与响应

目录

一,什么web请求与响应

1,web请求

2,web响应

3,HTTP协议概述

4,常见的HTTP状态码包括

二,python的requests库

1,安装requests库

2,发送GET请求

3,发送POST请求

三,处理JSON响应

四,文件操作

1,打开文件的模式

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

(2)示例:打开文件并使用模式

2,读取文件

(1)read()方法

(2)readline()方法

(3)readlines()方法

3,写入文件

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

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

4,下载文件示例

五,错误处理与异常捕获

1,try语句的使用

2,示例捕获常见异常


一,什么web请求与响应

在Web开发中,请求与响应是客户端(通常是浏览器)与服务器之间进行数据交换的基本机制。以下是关于Web请求与响应的详细说明

1,web请求

Web请求是客户端向服务器发送的请求,用于获取或提交数据。它通常包含以下几个关键部分:

  • 请求方法(HTTP Method):定义了请求的类型和目的。常见的HTTP方法包括:

    • GET:用于请求数据,通常用于获取资源(如网页、图片等)。
    • POST:用于提交数据,通常用于表单提交或上传文件。
    • PUT:用于更新服务器上的资源。
    • DELETE:用于删除服务器上的资源。
    • PATCH:用于对资源进行部分更新。
  • 请求头(Headers):包含关于请求的元信息,例如:

        请求体(Body):在POST、PUT等请求中,用于传递数据。

    2,web响应

    Web响应是服务器对客户端请求的回复,通常包含以下部分:

    • 状态码(Status Code):表示请求的处理结果。常见的状态码包括:

      • 200 OK:请求成功。
      • 404 Not Found:请求的资源不存在。
      • 500 Internal Server Error:服务器内部错误。
      • 401 Unauthorized:未授权访问。
    • 响应头(Headers):包含关于响应的元信息,例如:

      • Content-Type:指定响应体的格式(如text/htmlapplication/json)。
      • Set-Cookie:用于在客户端设置Cookie。
      • Cache-Control:指示客户端如何缓存响应。
    • 响应体(Body):包含服务器返回的数据。例如,HTML页面、JSON数据或文件内容。

    3,HTTP协议概述

    HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网(WWW)数据通信的基础,主要用于客户端和服务器之间的通信。

    HTTP定义了多种请求方法,常用的包括:

    • GET:请求指定资源。
    • POST:向指定资源提交数据。
    • PUT:更新指定资源。
    • DELETE:删除指定资源。
    • HEAD:获取资源的元信息。

    4,常见的HTTP状态码包括

    HTTP响应中包含状态码,用于表示请求的处理结果。常见的状态码有:

    • 200 OK:请求成功。
    • 404 Not Found:请求的资源未找到。
    • 500 Internal Server Error:服务器内部错误。

    二,python的requests库

    1,安装requests库

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

    2,发送GET请求

    vim aaa.py
    import requests
    response = requests.get('https://httpbin.org/get')
    print('状态码:',response.status_code)
    print(response.text)
    print('响应头:',response.headers)
    print('头部长度',len(response.text))
    python3 aaa.py

    3,发送POST请求

    vim bbb.py
    import requests
    url='https://httpbin.org/post'
    data={'name':'zhangsan','age':20}
    response=requests.post(url.data=data)
    print('状态码:',response.status_code)
    print(response.json())
    python3 bbb.py
    

    三,处理JSON响应

    vim ccc
    import requests
    url='https://httpbin.org/post'
    data={'name':'zhangsan','age':20}
    response=requests.post(url.data=data)
    print('状态码:',response.status_code)
    print(response.json())
    python3 ccc.py

    四,文件操作

    文件操作是计算机编程中处理文件的基本功能,主要包括文件的创建、读取、写入、删除和管理等操作。文件操作是程序与外部数据交互的重要方式,广泛应用于数据存储、配置管理、日志记录等场景。

    1,打开文件的模式

    在编程中,打开文件时通常需要指定文件的打开模式。不同的模式决定了文件的操作方式,例如读取、写入、追加等。以下是常见的文件打开模式及其用途:

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

    r:只读模式,文件必须存在
    w:写入,如果文件不存在,会创建一个新的,文件存在则会覆盖
    a:追加
    x:独占创建
    r+:读写,文件必须存在
    w+:读写,文件如果存在,会覆盖
    a+:读写,文件存在,数据会追加到末尾,不存在,会创建新文件
    rb+:二进制读写模式

    (2)示例:打开文件并使用模式

    with open('example.txt','r') as file
        content = file.read()
        print(content)
    with open('example.txt','w') as file
        file.write("这是新的文件内容。\n")
    with open('example.txt','a') as file:
        file.write("追加的内容.\n")
    with open('image.jpg','rb') as file;
        binary_data = file.read()
        print("读取到的二进制数据:",binary_data[:20])

    2,读取文件

    (1)read()方法

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

    (2)readline()方法

    with open('example.txt','r') as file:
        line = file.readline()
        while line:
        print(line.strip())
        line = file.readline()

    (3)readlines()方法

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

    3,写入文件

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

    with open('output.txt','w') as file:
        file.write("第一行.\n")
        file.write("第二行.\n")

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

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

    4,下载文件示例

    import requests
    url = 'https://www.example.com/image.jpg'
    response = requests.get(url)
    if response.status_code==200:
        with open('downloaded_image.jpg','wb') as file:
             file.write(response.content)
        print("图片下载成功!")
    else:
        print(f"下载失败,状态码:{response.status_code}")

    五,错误处理与异常捕获

    1,try语句的使用

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

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

    2,示例捕获常见异常

    print('开始一个除法运算')
    while True:
    str1='请输入第一个整数\n'
    str2='请输入第二个整数\n'
    try:
     op1=int(input(str1))
     op2=int(input(str2))
     result=op1/op2
     print(result)
    except RequestEcception as req_err:
    print('你输入的数字有问题')

    代码解释

    1,try块:首先发起 HTTP 请求,设置超时时间为5秒,并使用response.raise for status()来检查响应的状态码。如果服务器返回了错误的状态码(如404、500),raise for status()会抛出
    HTTPError 异常。

    2,except块:

    Timeout:如果请求超时(超过设置的5秒),程序会捕获到Timeout异常,并打印“Request
    timed out"
    HTTPError:如果响应的状态码表明出现 HTTP 错误(例如 404表示未找到页面),程序会捕获
    到 HTTPError 异常,并打印相关错误信息,

    RequestException:捕获其他类型的网络相关错误(如连接问题、DNS 解析失败等)
    RequestException是所有 requests 库异常的基类,可以捕获任何requests 库抛出的异常

    3,.finally 块:

    finally 中的代码无论是否发生异常都会被执行。通常用于释放资源或做一些收尾工作。这里我们仅打印“Request attempt completed.”表示请求的结束。

    异常处理总结:

    异常处理让我们在程序运行中捕获到错误并做出相应处理,避免程序崩溃。
    通过 try..except结构,可以精确捕获并处理不同类型的异常。
    finally 块用于清理工作,在请求处理完成后可以释放资源(如关闭文件、数据库连接等)

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值