如何使用 Python 自动下载图像:综合指南

如何使用 python 自动下载图像:综合指南

在当今的数字时代,以编程方式管理和处理图像可以为您节省大量的时间和精力。如果您希望自动化从网络下载图像的过程,那么您来对地方了。在本文中,我们将深入研究一个使用 pexels api(高质量库存照片的流行来源)来完成此操作的 python 脚本。

概述
此处提供的 python 脚本允许您根据查询在 pexels 上搜索图像,如果满足特定条件则下载它们,并将它们保存到本地系统。该脚本使用了多个强大的库和 api,包括 requests、pillow 和 pexels api。

脚本的主要特点
api 集成:使用 api 从 pexels 获取图像。
动态过滤:根据尺寸和方向选择图像。
日期模拟:虽然 pexels api 不直接支持基于日期的过滤,但脚本通过生成随机日期来模拟这一点。
速率限制:避免因随机延迟而达到 api 速率限制。

理解代码

导入和配置

import osimport requestsfrom pil import imagefrom io import bytesioimport randomimport timefrom datetime import datetime, timedelta

脚本首先导入必要的库。这是一个快速概述:

os 和 requests 分别用于与文件系统交互和发出 http 请求。pil(pillow)用于处理图像操作。random、time 和 datetime 用于生成随机数、管理延迟和处理日期。

api_key = '...'  # replace with your actual pexels api keybase_url = 'https://api.pexels.com/v1/search'output_dir = 'output'search_query = 'subaru forester'min_width = 1080min_height = 1920num_images = 16orientation = 'vertical'

设置您的 api 密钥、pexels 的基本 url,并指定其他参数,例如搜索查询、最小图像尺寸、要下载的图像数量和图像方向。

立即学习“Python免费学习笔记(深入)”;

确保输出目录存在

if not os.path.exists(output_dir):    os.makedirs(output_dir)

脚本检查输出目录是否存在,并在必要时创建它。

获取图像

def get_images(query, page=1, per_page=15):    params = {        'query': query,        'page': page,        'per_page': per_page    }    response = requests.get(base_url, headers=headers, params=params)    response.raise_for_status()    return response.json()

此函数向 pexels api 发送请求,以根据搜索查询和其他参数获取图像。

下载和保存图像

def download_and_save_image(url, filename):    response = requests.get(url)    response.raise_for_status()    img = image.open(bytesio(response.content))    if img.width >= min_width and img.height >= min_height:        if orientation == 'vertical' and (img.height / img.width > 1.4):            img.save(filename)            print(f'saved {filename}')            return 1        elif orientation == 'horizontal' and (img.width / img.height > 1.4):            img.save(filename)            print(f'saved {filename}')            return 1    return 0

此函数处理从 url 下载图像,检查其尺寸和方向,如果符合条件则保存它。

生成随机日期

def generate_random_date():    end_date = datetime.now()    start_date = end_date - timedelta(days=4*365)    random_date = start_date + timedelta(days=random.randint(0, 4*365))    return random_date

该函数生成过去四年内的随机日期。虽然 pexels api 不直接提供基于日期的过滤,但这个随机日期模拟了这样的过滤器。

主要功能

def main():    images_downloaded = 0    page = 1    seen_images = set()    target_date = generate_random_date()    print(f"Target date for filtering: {target_date.strftime('%Y-%m-%d')}")while images_downloaded = NUM_IMAGES:                break            image_url = photo['src']['original']            photo_date = datetime.strptime(photo['created_at'], '%Y-%m-%dT%H:%M:%S%z') if 'created_at' in photo else datetime.now()            if photo_date > target_date and image_url not in seen_images:                filename = os.path.join(OUTPUT_DIR, f'image_{images_downloaded + 1}.jpg')                if download_and_save_image(image_url, filename):                    images_downloaded += 1                    seen_images.add(image_url)        page += 1        time.sleep(random.uniform(1, 2))  # Sleep to avoid hitting API rate limits

main() 函数协调图像获取、下载和保存过程。它管理分页、检查重复图像并强制延迟以遵守 api 的速率限制。

运行脚本
要运行此脚本,请确保您已将 api_key 替换为实际的 pexels api 密钥,并根据需要调整其他参数。将脚本保存在 .py 文件中并使用 python 解释器执行它。符合指定条件的图像将保存在输出目录中。

结论
自动图像下载可以简化您的工作流程并确保您拥有高质量的图像。该 python 脚本为此类任务提供了坚实的基础,并且可以根据您的需求灵活地进行自定义。无论您是在处理个人项目还是将图像下载集成到更大的应用程序中,此脚本都展示了 python 在处理基于 web 的任务方面的强大功能和多功能性。

以上就是如何使用 Python 自动下载图像:综合指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:53:24
下一篇 2025年12月8日 02:03:39

相关推荐

  • 硒 python 和 docker

    嗨,我展示了如何在 docker 容器中使用 selenium (或 undetected_chromedriver)。 我——dockerfile 我正在使用 docker python 图像并添加 chromdriver 和 chromium 来浏览网站。 第一步是创建requirements.…

    2025年12月13日
    000
  • 矢量视觉:改变您的本地图像搜索

    Vector Vision 是一款桌面应用程序,旨在简化用户搜索和管理本地图像集合的方式,利用技术提供直观、高效的体验,而无需互联网连接。该应用程序采用Python和Qt5作为其核心功能,而ChromaDB则增强了其图像搜索功能。 核心特性和技术见解 Vector Vision 的主要功能之一是其多…

    2025年12月13日
    000
  • ROBOFLOW – 使用 python 进行训练和测试

    roboflow 是一个用于注释图像以用于对象检测 ai 的平台。 我将这个平台用于 c2smr c2smr.fr,我的海上救援计算机视觉协会。 在本文中,我将向您展示如何使用这个平台并使用 python 训练您的模型。 您可以在我的github上找到更多示例代码:https://github.co…

    2025年12月13日
    000
  • 数据工程终极指南

    数据工程是设计和构建大规模收集、存储和分析数据的系统的实践。这是一个广泛的领域,几乎在每个行业都有应用。本文旨在提供有关如何成为一名数据工程师的分步指南。大多数数据工程师都拥有计算机科学或相关领域的学士学位背景,教授云计算、编码技能和数据库设计等基础知识。要成为一名数据工程师,首先应该专注于培养数据…

    2025年12月13日
    000
  • python+scrapy爬虫教程

    Scrapy 是一款强大的 Python 爬虫框架,用于抓取网站数据,包括结构化和非结构化数据。其安装步骤包括:1. pip install scrapy;2. 创建项目:scrapy startproject myproject;3. 创建爬虫:在 myproject/spiders 文件夹下创建…

    2025年12月13日
    000
  • 爬虫python教程迅雷下载

    要使用 Python 爬虫下载迅雷资源,需要:1. 安装库;2. 获取资源链接;3. 解析页面内容;4. 提取下载链接;5. 下载资源。具体步骤如下:1. 安装必要的库;2. 从迅雷网站获取资源链接;3. 使用 BeautifulSoup 解析页面内容;4. 使用正则表达式从 HTML 元素中提取迅…

    2025年12月13日
    000
  • python下载进度条怎么写代码

    Python 中进度条是使用 tqdm 库实现的,可用于在执行耗时操作时显示任务进度。通过安装 tqdm 并使用以下步骤创建进度条:创建一个代表任务的 range 对象(total)。使用 with tqdm(total=total) as progress_bar 创建一个进度条。遍历范围并调用 …

    2025年12月13日
    000
  • 机器学习中的标签编码

    标签编码是机器学习中最常用的技术之一。它用于将分类数据转换为数字形式。因此,数据可以拟合到模型中。 让我们了解为什么我们使用标签编码。想象一下,数据包含字符串 形式的基本列。但是,您无法将这些数据放入模型中,因为建模仅适用于数值数据,我们该怎么办?这是一种挽救生命的技术,当我们准备好数据进行拟合时,…

    2025年12月13日
    000
  • 推荐:《Python实践实验室》课程

    您是否希望提高 python 编程技能并应对现实世界的挑战? labex 提供的 python 实践实验室课程就是您的最佳选择。这门综合课程旨在指导您完成一系列实践项目,使您成为一名熟练的 python 程序员。 深入 Python 的深处 通过本课程,您将有机会探索各种 Python 编程概念和技…

    2025年12月13日
    000
  • 使用 EventBridge 和 Lambda 进行自动故障排除和 ITSM 系统

    介绍 : 各位,在 it 运营中,监视服务器指标(例如 cpu/内存和磁盘或文件系统的利用率)是一项非常通用的任务,但如果任何指标被触发为关键指标,则需要专门人员通过以下方式执行一些基本故障排除:登录服务器并找出使用的最初原因,如果该人收到多个相同的警报,导致无聊且根本没有生产力,则他必须多次执行该…

    2025年12月13日 好文分享
    000
  • 苹果系统python爬虫教程

    使用 Python 在苹果系统上构建爬虫的步骤:安装 Python 3 和 pip。安装爬虫库 requests 和 BeautifulSoup。使用 requests 库获取网页内容。使用 BeautifulSoup 库解析 HTML。遍历并提取数据。将数据保存到文件中。示例爬虫可提取 Stack…

    2025年12月13日
    000
  • 利用 Python 实现自动化:用代码简化日常任务

    介绍 Python 已成为从 Web 开发到数据科学等各种应用程序的首选语言。 Python 真正大放异彩的领域之一是自动化。无论您是想自动执行日常任务、简化工作流程,还是创建功能强大的脚本来节省时间和精力,Python 的简单性和多功能性都使其成为完成这项工作的完美工具。 为什么 Python 是…

    2025年12月13日
    000
  • 可视化项目

    我目前正在开发 TanaMobility,这是一个使用 Dash 和 Python 开发的交互式平台。该项目旨在通过利用地理空间数据对马达加斯加塔那那利佛的交通流进行建模和可视化,以更好地了解人口流动和交通动态。我非常感谢社区的反馈,以帮助改进这个平台并使可视化更加富有洞察力。欢迎您的帮助和建议。您…

    2025年12月13日
    000
  • 如何使用预先导入的包启动 python 或 ipython

    每次执行 python 或 ipython 时,都必须编写“import os”或其他常用包,这个脚本将启动 python 并导入这些包 #!/usr/bin/env bash# ————————————————————…

    2025年12月13日
    000
  • 使用 Pandas 进行 JIRA 分析

    问题 很难说 atlassian jira 是最受欢迎的问题跟踪器和项目管理解决方案之一。你可以喜欢它,也可以讨厌它,但如果你被某家公司聘用为软件工程师,那么很有可能会遇到 jira。 如果您正在从事的项目非常活跃,可能会有数千个各种类型的 jira 问题。如果您领导着一个工程师团队,您可能会对分析…

    2025年12月13日 好文分享
    000
  • python精美进度条 python制作精美进度条详细教程

    使用tqdm库可以轻松制作精美进度条。步骤如下:安装tqdm库:pip install tqdm导入tqdm库,使用tqdm.tqdm(序列)创建进度条自定义进度条:使用tqdm.tqdm(iterable, unit=”, desc=”, leave=False, &#82…

    2025年12月13日
    000
  • python终端进度条 python终端显示进度条百分比

    在 Python 终端显示进度条有三种方式:tqdm 库:安装 pip install tqdm,循环任务时更新进度条。富文本进度条:安装 pip install rich,提供更多自定义选项。自制进度条:编写简单代码,打印完成百分比进度条。 如何在 Python 终端显示进度条 显示进度条是向用户…

    2025年12月13日
    000
  • Python控制台显示动态进度条

    Python 控制台中实现动态进度条的方法:tqdm 包:使用 tqdm 库创建和定制进度条。ProgressBar2 包:支持高级功能,例如多进程并行处理。自定义实现:使用 Python 内置函数实现简单的进度条。 Python 控制台中显示动态进度条 简介 在 Python 脚本中显示动态进度条…

    2025年12月13日
    000
  • 让python实现控制台进度条

    创建 Python 进度条有三种方法:1. 使用进度条库(tqdm、progress); 2. 使用 sys.stdout; 3. 使用进度条小部件(GUI框架)。 如何使用 Python 实现控制台进度条 进度条是一种可视化工具,可以显示一个任务的进展情况。在 Python 中,有几种方法可以创建…

    2025年12月13日
    000
  • Python控制台打印进度条 python用控制台打印进度条

    在 Python 脚本中,使用 tqdm 库可以在控制台中打印进度条,直观显示任务进展:安装 tqdm 库:pip install tqdm导入 tqdm,包装迭代器,执行操作,打印进度:from tqdm import tqdm; for i in tqdm(data): print(i)可自定义…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信