使用requests包批量下载网页图片

使用requests包获取respons请求对象,通过接口获取json字符串,对字符串处理后得到图片url,再使用多线程下载

python 复制代码
# 并发编程 ------ 多线程 、 多进程 、 异步编程
from concurrent.futures import ThreadPoolExecutor
import requests
# 唯一标识符
import uuid

def downLoad(url='https://image.so.com/zjl?sn=0&ch=car', page=0):
    # 最大进程数
    pool = ThreadPoolExecutor(max_workers=16)
    spliturl = url.split('?')
    for p in range(page + 1):
        # 拼接页数
        newUrl = spliturl[0] + '?' + f'sn={p}' + spliturl[1]
        # 得到response请求对象
        resp = requests.get(url=newUrl)
        # 将获取的json字符串处理成字典
        json_dict = resp.json()
        # 获取list键对应的值
        list_dict = json_dict['list']
        # 获取图片url,并使用多线程下载
        for i in range(len(list_dict)):
            qhimg_url = list_dict[i]['qhimg_url']
            # savePic(qhimg_url, getPicName('C://Users/小碧宰治/Desktop/cars'))
            pool.submit(savePic, qhimg_url, getPicName('C://Users/小碧宰治/Desktop/cars'))
        pool.shutdown()

def getPicName(savedir):
    """保存位置"""
    return f'{savedir}/{uuid.uuid1().hex}.jpg'

def savePic(url, savedir):
    """写图片并保存"""
    # 写二进制
    with open(savedir, mode='wb') as file_obj:
        resp = requests.get(url=url)
        file_obj.write(resp.content)

downLoad()
相关推荐
典学长编程1 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
烛阴2 小时前
简单入门Python装饰器
前端·python
好开心啊没烦恼2 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开3 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式
2301_805054564 小时前
Python训练营打卡Day59(2025.7.3)
开发语言·python
万千思绪4 小时前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
微风粼粼6 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
云天徽上6 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5
你怎么知道我是队长6 小时前
python-input内置函数
开发语言·python
叹一曲当时只道是寻常6 小时前
Python实现优雅的目录结构打印工具
python