Python下载的11种姿势(小结)


Posted in Python onNovember 18, 2020

1、使用requests

你可以使用requests模块从一个URL下载文件。

考虑以下代码:

Python下载的11种姿势(小结)

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

2、使用wget

Python下载的11种姿势(小结)

你还可以使用Python的wget模块从一个URL下载文件。你可以使用pip按以下命令安装wget模块:

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

Python下载的11种姿势(小结)

在这段代码中,URL和路径(图像将存储在其中)被传递给wget模块的download方法。

3、下载重定向的文件

在本节中,你将学习如何**使用requests从一个URL下载文件,**该URL会被重定向到另一个带有一个.pdf文件的URL。该URL看起来如下:

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

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

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

4、分块下载大文件

考虑下面的代码:

Python下载的11种姿势(小结)

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

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

然后,我们指定每次要下载的块大小**。我们已经将其设置为1024字节,**接着遍历每个块,并在文件中写入这些块,直到块结束。

不漂亮吗?不要担心,稍后我们将显示一个下载过程的进度条。

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

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

Python下载的11种姿势(小结)

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

让我们创建一个简单的函数,将响应分块发送到一个文件:

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

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

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

运行该脚本。

6、使用进度条进行下载

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

Python下载的11种姿势(小结)

考虑以下代码:

Python下载的11种姿势(小结)

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

7、使用urllib下载网页

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

urllib库是Python的标准库,因此你不需要安装它。

以下代码行可以轻松地下载一个网页:

Python下载的11种姿势(小结)

在这里指定你想将文件保存为什么以及你想将它存储在哪里的URL。

Python下载的11种姿势(小结)

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

8、通过代理下载

如果你需要使用代理下载你的文件,你可以使用urllib模块的ProxyHandler。请看以下代码:

Python下载的11种姿势(小结)

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

此外,你还可以按照官方文档的介绍来使用requests模块:

Python下载的11种姿势(小结)

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

9、使用urllib3

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

Python下载的11种姿势(小结)

我们将通过使用urllib3来获取一个网页并将它存储在一个文本文件中。

导入以下模块:

Python下载的11种姿势(小结)

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

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

创建一个文件:

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

10、使用Boto3从S3下载文件

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

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

要从Amazon S3下载文件,你需要导入boto3和botocore。Boto3是一个Amazon SDK**,它允许Python访问Amazon web服务(如S3)。**Botocore提供了与Amazon web服务进行交互的命令行服务。

Botocore自带了awscli。要安装boto3,请运行以下命令:

Python下载的11种姿势(小结)

现在,导入这两个模块:

Python下载的11种姿势(小结)

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

Bucket名称你需要下载的文件名称文件下载之后的名称

初始化变量:

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

11、使用asyncio

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

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

Python下载的11种姿势(小结)

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

Python下载的11种姿势(小结)

关键字async表示这是一个原生asyncio协同程序。在协同程序的内部,我们有一个await关键字,它会返回一个特定的值。我们也可以使用return关键字。

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

Python下载的11种姿势(小结)

在这段代码中,我们创建了一个异步协同函数,它会下载我们的文件并返回一条消息。

然后,我们使用另一个异步协同程序调用main_func,**它会等待URL并将所有URL组成一个队列。**asyncio的wait函数会等待协同程序完成。

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

到此这篇关于Python下载的11种姿势(小结)的文章就介绍到这了,更多相关Python下载方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python列表操作使用示例分享
Feb 21 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
Python中List.index()方法的使用教程
May 20 Python
以windows service方式运行Python程序的方法
Jun 03 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
浅析python协程相关概念
Jan 20 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
在python 中实现运行多条shell命令
Jan 07 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 #Python
Opencv python 图片生成视频的方法示例
Nov 18 #Python
calendar在python3时间中常用函数举例详解
Nov 18 #Python
Python 远程开关机的方法
Nov 18 #Python
python 元组和列表的区别
Dec 30 #Python
基于Python爬取搜狐证券股票过程解析
Nov 18 #Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 #Python
You might like
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python yield与实现方法代码分析
2018/02/06 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
python实现计算图形面积
2021/02/22 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
static函数与普通函数有什么区别
2015/12/25 面试题
《最佳路径》教学反思
2014/04/13 职场文书
企业文化口号
2014/06/12 职场文书
英语教师求职信
2014/06/16 职场文书
党章培训心得体会
2014/09/04 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android