首页  >  文章  >  后端开发  >  如何使用 Python 3 从网络下载文件?

如何使用 Python 3 从网络下载文件?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 03:04:01954浏览

How to Download Files from the Web Using Python 3?

在 Python 3 中从 Web 下载文件

从 JAD 文件中提取 URL 来下载 JAR 文件时,由于 URL 存储为字符串,我们遇到错误类型。为了解决这个问题,我们探索了在 Python 3 中下载带有字符串 URL 的文件的方法。

检索网页内容:

将网页内容提取到一个变量,我们可以使用 urllib.request.urlopen 并读取响应:

<code class="python">import urllib.request

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()      # bytes object
text = data.decode('utf-8') # str object</code>

下载和保存文件:

对于简单的文件下载和保存,urllib .request.urlretrieve 是最佳方案:

<code class="python">import urllib.request

# Download and save file from url to file_name
urllib.request.urlretrieve(url, file_name)</code>

或者,您可以获取本地路径和响应标头:

<code class="python">file_name, headers = urllib.request.urlretrieve(url)</code>

使用 urlopen 和 Shutil.copyfileobj 的最佳解决方案:

推荐的方法是利用 urllib.request.urlopen 检索类似文件的 HTTP 响应对象,并使用 Shutil.copyfileobj 将其复制到文件:

<code class="python">import urllib.request
import shutil

# Download and save file from url to file_name
with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
    shutil.copyfileobj(response, out_file)</code>

小文件的替代方法:

对于较小的文件,可以将整个下载存储在字节对象中并将其写入文件:

<code class="python">import urllib.request

# Download and save file from url to file_name
with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
    data = response.read() # bytes object
    out_file.write(data)</code>

即时提取压缩数据:

如果 HTTP 服务器支持随机文件访问,您还可以即时提取压缩数据:

<code class="python">import urllib.request
import gzip

# Read first 64 bytes of .gz file at url
url = 'http://example.com/something.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # bytes object</code>

以上是如何使用 Python 3 从网络下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn