使用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()
相关推荐
方安乐3 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
zh1570234 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
蜡台5 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Mr.朱鹏5 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
2401_871492856 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
FreakStudio6 小时前
亲测可用!可本地部署的 MicroPython 开源仿真器
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
SilentSamsara7 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
zhoutongsheng7 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python
.5488 小时前
## Sorting(排序算法)
python·算法·排序算法
ydmy8 小时前
注意力机制(个人理解)
pytorch·python·深度学习