Python教程:使用Requests和Wget模块从Web下载文件的完整指南

在本教程中,您将学习如何使用不同的Python模块从Web下载文件。此外,您将下载常规文件,网页,亚马逊S3和其他资源。

Python教程:使用Requests和Wget模块从Web下载文件的完整指南

最后,您将学习如何克服可能遇到的各种挑战,例如下载重定向文件,下载大文件,完成多线程下载以及其他策略。

使用请求

您可以使用请求模块从URL下载文件。

考虑以下代码:

您只需要使用请求模块的GET方法获取URL并将结果存储在名为“ myfile”的变量中。然后,将此变量的内容写入文件。

使用WGET

您也可以使用Python的WGET模块从URL下载文件。您可以使用PIP安装WGET模块如下:

考虑以下代码,我们将使用它下载Python徽标图像。

在此代码中,URL和路径(将存储图像的路径)传递给WGET模块的下载方法。

下载重定向文件

在本节中,您将学习如何使用请求从URL下载文件,该文件将通过.pdf文件重定向到另一个URL。 URL看起来像这样:

要下载此PDF文件,请使用以下代码:

在此代码中,我们指定的第一步是URL。然后,我们使用请求模块的GET方法获取URL。在GET方法中,我们将允许_redirects设置为true,这将允许在URL中重定向,并且将重定向后的内容分配给变量myfile。

最后,我们打开一个文件来编写检索到的内容。

在块中下载大文件

考虑以下代码:

首先,我们像以前一样使用请求模块的GET方法,但是这次,我们将将流属性设置为true。

接下来,我们在当前工作目录中创建一个名为pythonbook.pdf的文件,然后打开它供书写。

然后,我们指定每次下载的块大小。我们将其设置为1024字节,然后迭代每个块,然后在文件中写入这些块,直到块结束。

不漂亮吗?不用担心,我们将在下载过程中展示一个进度栏。

下载多个文件(并行/批次下载)

要同时下载多个文件,请导入以下模块:

我们导入了操作系统和时间模块,以检查下载文件所需的时间。 ThreadPool模块允许您使用池运行多个线程或进程。

让我们创建一个简单的功能,将响应发送到块中的文件:

该URL是一个二维数组,指定您要下载页面的路径和网址。

就像上一节中所做的那样,我们将此URL传递给requests.get。最后,我们打开文件(URL中指定的路径)并写入页面内容。

现在,我们可以为每个URL分别调用此功能,也可以同时调用所有URL。让我们为for循环中的每个URL调用此功能,请注意计时器:

现在,用以下代码替换for循环:

运行脚本。

使用进度栏下载

进度条是Clint模块的UI组件。输入以下命令安装Clint模块:

考虑以下代码:

在此代码中,我们首先导入请求模块,然后我们从clint.textui导入进度组件。唯一的区别是for循环。将内容写入文件时,我们使用Progress Bar模块的条方法。

使用Urllib下载网页

在本节中,我们将使用Urllib下载网页。

Urllib库是Python的标准库,因此您无需安装它。

以下代码可以轻松下载网页:

这是为什么要保存文件以及要存储的位置的URL,

在此代码中,我们使用urlretrieve方法并传递文件的URL,以及保存文件的路径。文件扩展名为.html。

通过代理下载

如果您需要使用代理下载文件,则可以使用Urllib模块的代理人。请参阅以下代码:

在此代码中,我们创建一个代理对象,并通过调用Urllib的build_opener方法并传递代理对象来打开代理。然后,我们创建一个请求以获取页面。

此外,您还可以使用官方文档中所述的请求模块:

您只需要导入请求模块并创建代理对象即可。然后,您可以获取文件。

使用Urllib3

Urllib3是Urllib模块的改进版本。您可以使用PIP下载并安装它:

我们将使用URLLIB3并将其存储在文本文件中。

导入以下模块:

处理文件时,我们使用Shutil模块。

现在,我们初始化了这样的URL字符串变量:

然后,我们使用了Urllib3的PoolManager,该Poolmanager跟踪必要的连接池。

创建一个文件:

最后,我们发送get请求以获取URL并打开文件,然后写下对文件的响应:

使用boto3从S3下载文件

要从Amazon S3下载文件,您可以使用Python Boto3模块。

在开始之前,您需要使用PIP安装AWSCLI模块:

对于AWS配置,请运行以下命令:

现在,通过按下以下命令输入您的详细信息:

要从Amazon S3下载文件,您需要导入Boto3和Botocore。 BOTO3是一个Amazon SDK,允许Python访问Amazon Web服务(例如S3)。 Botocore提供了与Amazon Web服务互动的命令行服务。

Botocore随附AWSCLI。要安装boto3,请运行以下命令:

现在,导入这两个模块:

从亚马逊下载文件时,我们需要三个参数:

水桶名

您需要下载的文件名称

下载文件后的名称

初始化变量:

现在,我们初始化一个变量以使用会话的资源。为此,我们将调用boto3的资源()方法并将其传递到服务中,即S3:

最后,使用download_file方法下载文件并传递到变量:

使用Asyncio

异步模块主要用于处理系统事件。它可以围绕一个事件循环,该事件循环等待事件发生,然后对该事件做出反应。该反应可以调用另一个功能。此过程称为事件处理。 Asyncio模块使用Coroutines进行事件处理。

要使用Asyncio事件处理和协作,我们将导入Asyncio模块:

现在,定义Asyncio协作方法:

关键字async表示这是本地异步Coroutine。在Coroutine内部,我们有一个等待的关键字,它返回特定值。我们还可以使用返回关键字。

现在,让我们使用一个代码的协作创建来从网站下载文件:

在此代码中,我们创建了一个异步协作函数,该功能下载我们的文件并返回消息。

然后,我们使用另一个异步coroutine调用main_func,该coroutine将等待URL并将所有URL形成队列。 Asyncio的等待功能将等待Coroutine完成。

现在,为了启动Coroutine,我们必须使用Asyncio的get_event_loop()方法将Coroutine放入事件循环中,最后,我们使用Asyncio的Run_until_complete()方法来执行事件循环。

使用Python下载文件很有趣。希望该教程对您有用!


长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

▲扫描二维码-免费领取


推荐阅读

微软推出Pylance,改善VS Code中的Python体验

总结了90条写 Python程序的建议

可能是最全面的 python 字符串拼接总结(带注释版)
最新 Python 爬虫利器!


你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读