python图片批量下载多线程+超时重试

发布时间:2023年12月24日

背景
    上篇python入门实战:爬取图片到本地介绍过如何将图片下载到本地,但是实际处理过程中会遇到性能问题:分页数过多下载时间过程、部分页面连接超时无法访问下载失败。本文从实战的角度解释一下如何处理这两个问题。
    下载时间过长问题,处理方式是使用多线程,首先回顾一下上篇文章文件下载处理过程,总结来说只有两个步骤:1.获取指定网页的所有图片地址,2.根据图片地址循环访问下载到本地。使用多线程处理任务最简单的办法就是一个线程处理一页的下载任务,就是获取一页的图片地址,下载该页面的所有图片。需要下载多少页就创建多少个线程。
    连接超时无法访问问题,这个问题处理方式就是请求重试,就是针对连接超时的请求重新发送指定次数的请求。关于重试,可以看下自定义请求重试方式和request中封装的请求重试方法。 Python基础入门3.6 request模块之请求重试两者的区别已经介绍的很清楚了。思路梳理完毕之后下面就是具体的实现。

代码实现

import threading  # 线程
import time
import requests
import bs4
import os
from requests.adapters import HTTPAdapter  # 添加重试机制


def getImgUrlList(webSiteUrl,local_path):
    print(f"下载地址:{webSiteUrl}")
    try:
        session = requests.Session()
        session.mount('http://', HTTPAdapter(max_retries
文章来源:https://blog.csdn.net/weixin_43401380/article/details/135178086
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。