最后,您将学习如何克服可能遇到的各种挑战,例如下载重定向文件、下载大文件、完成多线程下载以及其他策略。
使用
您可以使用模块从 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%免费】