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开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
Python3 中文文件读写方法
Jan 23 Python
python查询mysql,返回json的实例
Mar 26 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
Python assert语句的简单使用示例
Jul 28 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
详解python的异常捕获
Mar 03 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导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php中文验证码实现方法
2015/06/18 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
php验证手机号码
2015/11/11 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
python合并文本文件示例
2014/02/07 Python
详解python基础之while循环及if判断
2017/08/24 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
2013年保送生自荐信格式
2013/11/20 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
数学备课组工作总结
2015/08/12 职场文书
2016小学新学期寄语
2015/12/04 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android