python下载需要配置环境吗,python下载之后怎么打开

本文详细介绍了如何使用Python的requests、wget、urllib、boto3等模块下载文件,包括处理重定向、大文件、多线程下载,以及通过AmazonS3和使用asyncio实现异步下载。涵盖了从基本到高级的技术应用。

大家好,小编为大家解答python下载需要配置环境吗的问题。很多人还不知道python下载之后怎么打开,现在让我们一起来看看吧!

‍‍        

今天我们一起学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、Amazon S3和其他资源python含金量高的证书

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

1、使用requests

2b9565957d2a7f43651497ba51917863.gif

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

考虑以下代码:

da27e00fdb495a49ea73c44514a7764a.jpeg

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

2、使用wget

c17f4f866640ea6247540d66e3162266.gif

d8a13c66d17706b1a6575ce0f7beadc3.jpeg

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

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

decb61b7b01e04696a946aeef8abbfc1.jpeg

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

3、下载重定向的文件

37e1ae9b172a73b289256682055eed5b.gif

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

d23d2cb0438d03bcab43b760d65ebdfa.jpeg

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

7d815b54ad4b0fa35320522e0d67acee.jpeg

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

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

4、分块下载大文件

1e62ae01813b7bd0657ad23f9df26232.gif

考虑下面的代码:

9a40b20fa7be145880a19dff119bda5b.jpeg

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

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

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

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

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

7f38a007d94d1e7bc06d9e1a3cb3194f.gif

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

3f27f2399cf755893973d1a5683e786f.jpeg

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

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

b46b1b4a3bcf8f0e45ae47f3db324237.jpeg

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

a594596b8e8d0948d4d7ad5fb215b55a.jpeg

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

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

e78e35681730181d1da5bd1ae8b6361f.jpeg

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

3e48b2fa3151711f4b4feb96b8855b08.jpeg

运行该脚本。

6、使用进度条进行下载

eb636e98b5173d32e49af6039ac85113.gif

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

6a032d02d06c9c498284add193189c99.jpeg

考虑以下代码:

0e891d7d655284f13237877f8bf6420d.jpeg

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

7、使用urllib下载网页

6a5bf2714bb6f3018e09c6e649d8eeee.gif

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

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

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

96ca70c914a7c1d8164fa47d19b3eb99.jpeg

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

a55ee3c4c12437ca8318324add842600.jpeg

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

8、通过代理下载

4f43ce75e116815bd0a60748b97c9a01.gif

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

c5203a1f0908ee3764ad7f0da501bee3.jpeg

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

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

b8b9fb92088cc20aa4077f2205c1f246.jpeg

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

9、使用urllib3

3ddcd17ae94800e4380538bf0347365d.gif

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

109aede99d8b1482b202f36dc796cfa5.jpeg

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

导入以下模块:

86d8a14ef0409f4455b44947c91bce55.jpeg

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

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

1cd7d9cc424f99433371355c2f2587aa.jpeg

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

8c35dd838aa6ee104dd784de7b188834.jpeg

创建一个文件:

9c12dfef91a72b9317091f65f2c0fb37.jpeg

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

79dc77ba6599b2f5dfc03b70fd522907.jpeg

10、使用Boto3从S3下载文件

c59703f5d34b612622e4651a0b33c68d.gif

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

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

b79addad523aa788447bb27fe35d8b21.jpeg

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

2db6b7ab686efa5ca534ccec94603565.jpeg

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

6bc305aaad33bb4006c5dee592f49074.jpeg

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

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

c3fe2ac6da07f5a7fe01953bd97578a6.jpeg

现在,导入这两个模块:

6b863fec8c5b387ec8f6a34b571ca118.jpeg

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

  • Bucket名称

  • 你需要下载的文件名称

  • 文件下载之后的名称

初始化变量:

a7c19b577f0aa9befd75350ac864e371.jpeg

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

4c41d6084911e66fff0fe606b2b29ebf.jpeg

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

69ddfc0e27affcd5edfe595f68c62c8e.jpeg

11、使用asyncio

b69c291414aec72dd4ec4087366254a1.gif

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

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

416acf861dd9f0c5f8480ed00327834d.jpeg

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

440564e407799c6327deff810ee3f19e.jpeg

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

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

7c1fa3a12ef98332b7aeea53e6028cbc.jpeg

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

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

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

希望大家遇到下载需求时可以有所参考!

原文链接:http://dwz.date/cQjK

NO.1

往期推荐

Historical articles

NumPy、Pandas中若干高效函数!

Jupyter Notebook格式美化,惊艳了所有人!!

厉害了,用Python在Excel表格当中绘制可视化大屏!!

17道经典考题,检验你的 Python 基本功

分享、收藏、点赞、在看安排一下?

36be6764765192e8fb383b7e55c48967.gif

0b275d42e1a4103c069103c8b7962b6d.gif

6d971d7dad69c57276da643ba9beedf6.gif

ae049aef594b827aaa67147d5a06c0a1.gif

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值