使用 Python 下载的11种姿势,一种比一种高级(上)

发表于:2022-7-08 09:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:Python人工智能技术

  下面你将学习如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策略。
  1. 使用requests
  你可以使用requests模块从一个URL下载文件。
  考虑以下代码:
  你只需使用requests模块的get方法获取URL,并将结果存储到一个名为“myfile”的变量中。然后,将这个变量的内容写入文件。
  2. 使用wget
  你还可以使用Python的wget模块从一个URL下载文件。你可以使用pip按以下命令安装wget模块:
  考虑以下代码,我们将使用它下载Python的logo图像。
  在这段代码中,URL和路径(图像将存储在其中)被传递给wget模块的download方法。
  3. 下载重定向的文件
  在本节中,你将学习如何使用requests从一个URL下载文件,该URL会被重定向到另一个带有一个.pdf文件的URL。该URL看起来如下:
  要下载这个pdf文件,请使用以下代码:
  在这段代码中,我们第一步指定的是URL。然后,我们使用request模块的get方法来获取该URL。在get方法中,我们将allow_redirects设置为True,这将允许URL中的重定向,并且重定向后的内容将被分配给变量myfile。另外,搜索公众号顶级架构师后台回复“面试籍”,获取一份惊喜礼包。
  最后,我们打开一个文件来写入获取的内容。
  4. 分块下载大文件
  考虑下面的代码:
  首先,我们像以前一样使用requests模块的get方法,但是这一次,我们将把stream属性设置为True。
  接着,我们在当前工作目录中创建一个名为PythonBook.pdf的文件,并打开它进行写入。
  然后,我们指定每次要下载的块大小。我们已经将其设置为1024字节,接着遍历每个块,并在文件中写入这些块,直到块结束。
  不漂亮吗?不要担心,稍后我们将显示一个下载过程的进度条。
  5. 下载多个文件(并行/批量下载)
  要同时下载多个文件,请导入以下模块:
  我们导入了os和time模块来检查下载文件需要多少时间。ThreadPool模块允许你使用池运行多个线程或进程。
  让我们创建一个简单的函数,将响应分块发送到一个文件:
  这个URL是一个二维数组,它指定了你要下载的页面的路径和URL。
  就像在前一节中所做的那样,我们将这个URL传递给requests.get。最后,我们打开文件(URL中指定的路径)并写入页面内容。
  现在,我们可以分别为每个URL调用这个函数,我们也可以同时为所有URL调用这个函数。让我们在for循环中分别为每个URL调用这个函数,注意计时器:
  现在,使用以下代码行替换for循环:
  运行该脚本。
  6. 使用进度条进行下载
  进度条是clint模块的一个UI组件。输入以下命令来安装clint模块:
  考虑以下代码:
  在这段代码中,我们首先导入了requests模块,然后,我们从clint.textui导入了进度组件。唯一的区别是在for循环中。在将内容写入文件时,我们使用了进度条模块的bar方法。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号