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客户端下载文件。
