您的位置  > 互联网

教程:如何使用不同的模块从web下载文件

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

使用

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

考虑以下代码:

您只需使用模块的 get 方法获取 URL,并将结果存储到名为“”的变量中。 然后,将该变量的内容写入文件。

使用 wget

您还可以使用 wget 模块从 URL 下载文件。 您可以使用 pip 通过以下命令安装 wget 模块:

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

在此代码中,URL 和路径(存储图像的位置)被传递给 wget 模块的方法。

下载重定向的文件

在本节中,您将了解如何从 URL 下载文件,该文件将重定向到另一个包含 .pdf 文件的 URL。 网址如下所示:

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

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

最后,我们打开一个文件来写入获取的内容。

分块下载大文件

考虑以下代码:

首先,我们像以前一样使用模块的 get 方法,但这一次,我们将该属性设置为 True。

接下来,我们在当前工作目录中创建一个名为 .pdf 的文件并打开它进行写入。

然后我们指定每次下载的块大小。 **我们将其设置为 1024 字节,然后迭代每个块,**并将块写入文件中,直到块末尾。

是不是很漂亮? 别担心,我们稍后会显示下载过程的进度条。

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

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

我们导入了 os 和 time 模块来检查下载文件需要多长时间。 模块允许您使用池运行多个线程或进程。

让我们创建一个简单的函数来对文件的响应进行分块:

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

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


现在,我们可以单独为每个 URL 调用此函数,也可以同时为所有 URL 调用此函数。 **让我们在for循环中为每个URL分别调用这个函数,**注意计时器:

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

运行脚本。

使用进度条下载

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

考虑以下代码:

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

使用下载页面

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

该库是标准库,因此不需要安装它。

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

在此指定要保存文件的目的以及要存储文件的 URL。

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

通过代理下载

如果您需要使用代理下载文件,可以使用该模块。 请看下面的代码:

在这段代码中,我们创建了代理对象,通过调用方法打开代理,并传入代理对象。 然后我们创建一个请求来获取该页面。

另外,您还可以按照官方文档中的描述使用该模块:

您只需要导入模块并创建代理对象。 **然后,您就可以获取该文件了。

使用

**

**

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

我们将获取一个网页并将其存储在文本文件中,方法是使用。

导入以下模块:

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

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

然后,我们使用 ,它跟踪必要的连接池。

创建一个文件:

最后,我们发送一个 GET 请求来获取 URL 并打开一个文件,然后将响应写入该文件:

10

使用 Boto3 从 S3 下载文件

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

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

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

现在,输入您的详细信息,如下所示:

要从 S3 下载文件,您需要导入 boto3 和 . Boto3 是一个允许访问 Web 服务(例如 S3)的 SDK。 **提供用于与 Web 服务交互的命令行服务。

带了你自己的。 要安装 boto3,请运行以下命令:

现在,导入这两个模块:

下载文件时,我们需要三个参数:

初始化变量:

现在,**我们初始化一个变量来使用会话的资源。 **为此,我们将调用 boto3 的 () 方法并传入服务,即 s3:

最后使用下载文件的方法并传入变量:

11

使用

**模块主要用来处理系统事件。 **它围绕事件循环工作,等待事件发生然后对该事件做出反应。 反应可以是调用另一个函数。 这个过程称为事件处理。 模块使用协程进行事件处理。

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

现在,像这样定义协程方法:

关键字 async 表明这是一个原生协程。 在协程内部,我们有一个await关键字,它返回一个特定值。 我们还可以使用关键词。

现在,让我们使用共同创建从网站下载文件:

在此代码中,我们创建一个异步协程来下载文件并返回消息。

然后,我们使用另一个异步协程调用来等待 URL 并将所有 URL 分组到队列中。 **等待函数将等待协程完成。

现在,为了启动协程,我们必须使用 () 方法将协程放入事件循环中,最后,我们使用 () 方法执行事件循环。

使用下载文件非常有趣。 希望本教程对您有用!

关于技术储备

不管是为了找工作还是为了副业赚钱,学好固然好,但是要学,还是要有一个学习计划。 最后分享一套完整的学习资料,给想学习的人一些帮助!

1.全方位学习路线

将各个方向的技术点进行整理,形成各个领域的知识点总结。 它的用处在于你可以根据以上知识点找到对应的学习资源,保证你学得更全面。

2. 必备的开发工具

3、视频采集

观看零基础学习视频。 看视频是最快、最有效的学习方式。 跟着视频里老师的思路,从基础到深入,很容易上手。 (读者福利见文末)

4. 实际案例

光学理论是没有用的。 你必须学会​​遵循并实践它,才能将所学的知识运用到实践中。 这个时候,你可以通过一些实际案例来学习。 (读者福利见文末)

5. 练习

检查学习成果。

6. 面试材料

我们必须学习才能找到一份高薪工作。 以下面试题均来自阿里巴巴、腾讯、字节跳动等一线互联网公司的最新面试资料,阿里巴巴老总们都给出了权威答案。 完成这组面试后相信大家都能找到一份满意的工作。 (文章末尾获取)

这套完整的学习资料已上传至CSDN。 如果需要,可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】