图像自动化保存工具:Python脚本开发指南

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 图像自动化保存工具:Python脚本开发指南

引言
在数字化时代,图像已成为信息传递的重要媒介。无论是社交媒体、新闻网站还是电子商务平台,图像的自动化处理和保存都是提升用户体验和工作效率的关键。本文将深入探讨如何使用Python脚本实现从百度图片等搜索引擎批量下载并保存图像文件的高级应用。
技术背景
百度图片是中国最大的图片搜索引擎之一,提供了海量的图像资源。自动化地从百度图片下载图像,不仅可以用于个人收藏,还可以用于数据分析、机器学习等领域。
技术选型
实现百度图片的自动化下载,我们主要使用以下技术栈:
● Python:一种易于学习和使用的高级编程语言。
● requests:用于发送HTTP请求的Python库。
● BeautifulSoup:用于解析HTML和XML文档的Python库。
● Pillow:Python Imaging Library的一个分支,用于图像处理。
● os 和 shutil:Python标准库中的模块,用于文件操作。
实现过程

  1. 获取图像URL
    首先,我们需要从百度图片搜索结果中提取图像URL。这通常涉及到发送HTTP请求和解析HTML响应。
  2. 下载图像
    获取到图像URL后,我们将使用requests库下载图像。
  3. 保存图像
    下载完成后,使用Pillow库处理图像并保存到本地文件系统。
  4. 异常处理
    在整个过程中,加入异常处理机制,确保程序的健壮性。
    代码实现
    以下是一个简单的Python脚本示例,展示如何实现上述功能:
    ```import os
    import requests
    from bs4 import BeautifulSoup
    from PIL import Image
    from io import BytesIO

代理服务器设置

proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

构建代理信息

proxies = {
'http': f'http://{proxyHost}:{proxyPort}',
'https': f'https://{proxyHost}:{proxyPort}'
}

由于requests无法直接处理带有认证信息的代理,

我们需要创建一个自定义的请求会话,并设置代理认证

session = requests.Session()
session.proxies = proxies
auth = (proxyUser, proxyPass)
session.auth = auth

def search_images(query, save_dir, num_images=10):

# 百度图片搜索URL
search_url = f"https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gbk&word={query}"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

# 发送GET请求获取搜索结果
response = session.get(search_url, headers=headers)  # 使用session发送请求
soup = BeautifulSoup(response.text, 'html.parser')

# 解析图像URL
image_tags = soup.find_all('img', {'class': 'img'})
image_urls = [img['src'] for img in image_tags if 'src' in img.attrs][:num_images]

# 保存图像
for i, url in enumerate(image_urls):
    try:
        # 下载图像
        image_response = session.get(url, headers=headers)  # 使用session发送请求
        image_response.raise_for_status()

        # 使用BytesIO创建一个可读的字节流
        image_stream = BytesIO(image_response.content)

        # 使用Pillow打开图像
        image = Image.open(image_stream)

        # 保存图像到指定目录
        image_filename = f"image_{i + 1}.jpg"
        image_path = os.path.join(save_dir, image_filename)
        image.save(image_path)
        print(f"图像已保存到:{image_path}")

    except requests.RequestException as e:
        print(f"请求错误:{e}")
    except IOError as e:
        print(f"图像处理错误:{e}")

if name == "main":

# 搜索关键词
query = "风景"
# 保存目录
save_dir = "downloaded_images"
# 确保保存目录存在
if not os.path.exists(save_dir):
    os.makedirs(save_dir)
# 搜索并下载图像
search_images(query, save_dir)

```
功能扩展
为了提高工具的实用性和用户体验,可以考虑以下功能扩展:
多关键词搜索:允许用户输入多个关键词,分别进行搜索和下载。
多页结果处理:支持翻页,获取更多搜索结果。
图像筛选:根据图像的分辨率、大小等属性进行筛选。
用户界面:开发图形用户界面,提高易用性。
定时任务:集成定时任务功能,定期自动执行搜索和下载。

相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
5天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
104 60
|
28天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
155 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
24天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
144 17
Selenium:强大的 Web 自动化测试工具
|
25天前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
84 7
21个Python脚本自动执行日常任务(2)
|
14天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
72 5
|
27天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
168 7
|
1月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
51 7
|
30天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
30天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!