当前位置 : 主页 > 编程语言 > python >

Python 下载的 8种

来源:互联网 收集:自由互联 发布时间:2022-06-15
文章目录 ​​1. 使用requests​​ ​​2. 使用wget​​ ​​3. 下载多个文件(并行/批量下载)​​ ​​4. 使用进度条进行下载​​ ​​5. 使用urllib下载网页​​ ​​6. 通过代理下载​​


文章目录

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

1. 使用requests

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

2. 使用wget

Python 下载的 8种_事件处理_03

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

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

4. 使用进度条进行下载

Python 下载的 8种_python_09

5. 使用urllib下载网页

Python 下载的 8种_python_10

6. 通过代理下载

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

7. 使用urllib3

Python 下载的 8种_事件循环_13
Python 下载的 8种_python_14
Python 下载的 8种_事件处理_15
Python 下载的 8种_事件处理_16
Python 下载的 8种_事件循环_17
Python 下载的 8种_协同程序_18

8. 使用asyncio

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

上一篇:python configParser配置文件模块
下一篇:没有了
网友评论