欢迎访问宙启技术站
智能推送

Python中的HTTP客户端编程实例:下载文件

发布时间:2024-01-07 08:06:04

在Python中,我们可以使用http.client模块来实现HTTP客户端编程。此模块提供了一个简单的接口用于创建和发送HTTP请求,并从服务器接收响应。

下面是一个简单的例子,演示了如何使用Python的HTTP客户端下载文件:

import http.client

# 定义要下载的文件的URL
file_url = "http://example.com/example.pdf"

# 创建HTTP连接
conn = http.client.HTTPSConnection("example.com")

# 发送GET请求并获取响应
conn.request("GET", file_url)
response = conn.getresponse()

# 确认响应状态码为200(成功)
if response.status == 200:
    # 通过Content-Disposition标头获取文件名
    content_disposition = response.getheader("Content-Disposition")
    filename = content_disposition.split("; ")[1].split("=")[1]

    # 打开一个新文件,按二进制写入模式
    with open(filename, "wb") as file:
        # 一次读取并写入一个字节块
        chunk = response.read(1024)
        while chunk:
            file.write(chunk)
            chunk = response.read(1024)

    print("文件下载完成.")
else:
    print("文件下载失败. HTTP状态码: {}".format(response.status))

# 关闭连接
conn.close()

上面的代码首先指定了要下载的文件的URL,然后创建一个HTTPS连接到example.com。然后它发送一个GET请求到指定的URL,并获取服务器的响应。如果响应状态码为200,表示请求成功,则解析响应头部的Content-Disposition标头以获取文件名,并打开一个新文件进行写入。然后,通过反复读取和写入响应体,将下载的内容写入文件中。最后,关闭连接。

请注意,该代码假设要下载的文件是以Content-Disposition标头指定的,例如Content-Disposition: attachment; filename=example.pdf。如果您打算下载的文件没有这样的标头,您可以手动指定要保存的文件名。

上述代码只是一个简单的示例,可能还需要进行一些额外的错误处理和其他的优化。但是,它提供了一个基本框架来使用Python的HTTP客户端下载文件。