0
点赞
收藏
分享

微信扫一扫

Python 下载的 8种


文章目录

  • ​​1. 使用requests​​
  • ​​2. 使用wget​​
  • ​​3. 下载多个文件(并行/批量下载)​​
  • ​​4. 使用进度条进行下载​​
  • ​​5. 使用urllib下载网页​​
  • ​​6. 通过代理下载​​
  • ​​7. 使用urllib3​​
  • ​​8. 使用asyncio​​

1. 使用requests

Python 下载的 8种_事件处理
下载重定向的文件
Python 下载的 8种_事件处理_02

2. 使用wget

Python 下载的 8种_协同程序_03

3. 下载多个文件(并行/批量下载)

Python 下载的 8种_事件处理_04
我们导入了os和time模块来检查下载文件需要多少时间。ThreadPool模块允许你使用池运行多个线程或进程。
让我们创建一个简单的函数,将响应分块发送到一个文件:
Python 下载的 8种_事件循环_05
这个URL是一个二维数组,它指定了你要下载的页面的路径和URL。
Python 下载的 8种_协同程序_06
就像在前一节中所做的那样,我们将这个URL传递给requests.get。最后,我们打开文件(URL中指定的路径)并写入页面内容。
现在,我们可以分别为每个URL调用这个函数,我们也可以同时为所有URL调用这个函数。让我们在for循环中分别为每个URL调用这个函数,注意计时器:
Python 下载的 8种_python_07
现在,使用以下代码行替换for循环:
Python 下载的 8种_事件循环_08

4. 使用进度条进行下载

Python 下载的 8种_python_09

5. 使用urllib下载网页

Python 下载的 8种_事件循环_10

6. 通过代理下载

Python 下载的 8种_事件循环_11
在这段代码中,我们创建了代理对象,并通过调用urllib的build_opener方法来打开该代理,并传入该代理对象。然后,我们创建请求来获取页面。
此外,你还可以按照官方文档的介绍来使用requests模块:
Python 下载的 8种_事件循环_12

7. 使用urllib3

Python 下载的 8种_python_13
Python 下载的 8种_事件处理_14
Python 下载的 8种_事件处理_15
Python 下载的 8种_协同程序_16
Python 下载的 8种_协同程序_17
Python 下载的 8种_事件处理_18

8. 使用asyncio

asyncio模块主要用于处理系统事件。它围绕一个事件循环进行工作,该事件循环会等待事件发生,然后对该事件作出反应。这个反应可以是调用另一个函数。这个过程称为事件处理。asyncio模块使用协同程序进行事件处理。
要使用asyncio事件处理和协同功能,我们将导入asyncio模块:
Python 下载的 8种_事件循环_19
现在,像这样定义asyncio协同方法
Python 下载的 8种_python_20
关键字async表示这是一个原生asyncio协同程序。在协同程序的内部,我们有一个await关键字,它会返回一个特定的值。我们也可以使用return关键字。
现在,让我们使用协同创建一段代码来从网站下载一个文件:
Python 下载的 8种_事件循环_21
在这段代码中,我们创建了一个异步协同函数,它会下载我们的文件并返回一条消息。
然后,我们使用另一个异步协同程序调用main_func,它会等待URL并将所有URL组成一个队列。asyncio的wait函数会等待协同程序完成。
现在,为了启动协同程序,我们必须使用asyncio的get_event_loop()方法将协同程序放入事件循环中,最后,我们使用asyncio的run_until_complete()方法执行该事件循环。

举报

相关推荐

0 条评论