使用Python实现网页中图片的批量下载和水印添加保存

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 使用Python实现网页中图片的批量下载和水印添加保存

数字时代,图片已经成为我们生活中的一部分。无论是社交媒体上的照片,还是网页中的图片元素,我们都希望能够方便地下载并进行个性化的处理。
假设你是一位设计师,你经常需要从网页上下载大量的图片素材,并为这些图片添加水印以保护你的作品。然而,手动下载和添加水印是一件繁琐的事情 ,这时就可以通过编写一个Python爬虫程序,自动化地完成这个任务,节省时间和精力。
我们的基本思路是通过发送HTTP请求获取网页内容,然后解析网页内容,提取出图片元素的URL。接下来,我们使用请求库下载这些图片,并使用Pillow库添加水印。最后,我们将处理后面的图片保存到本地。
在开始之前,我们需要准备以下工作:
1安装Python:确保您的计算机上已经安装了Python Spark语言的最新版本。
2安装所需的库:我们将使用requests库来发送HTTP请求,PIL库来处理图片。你可以使用以下命令来安装这些库:

pip install requests
pip install pillow

接下来,我们可以定义一个函数来发送HTTP请求并获取页面内容:

def fetch_page(url):
    proxies = {
        "http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
        "https": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
    }
    response = requests.get(url, proxies=proxies)
    return response.content

然后,我们可以编写一个函数来解析页面内容并提取图片元素的URL:

from bs4 import BeautifulSoup
def extract_image_urls(page_content):
    soup = BeautifulSoup(page_content, "html.parser")
    image_urls = []
    for img in soup.find_all("img"):
        image_urls.append(img["src"])
    return image_urls

接下来,我们可以编写一个函数来下载图片并添加水印:

def download_and_add_watermark(image_url):
    response = requests.get(image_url)
    image = Image.open(BytesIO(response.content))
    watermark = Image.new("RGBA", image.size, (0, 0, 0, 0))
    draw = ImageDraw.Draw(watermark)
    font = ImageFont.truetype("arial.ttf", 36)
    draw.text((10, 10), "Watermark", font=font, fill=(255, 255, 255, 128))
    watermarked_image = Image.alpha_composite(image.convert("RGBA"), watermark)
    watermarked_image.save("watermarked_image.png")

实现完整代码

以下是完整的Python代码:

import requests
from bs4 import BeautifulSoup
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"
def fetch_page(url):
    proxies = {
        "http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
        "https": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
    }
    response = requests.get(url, proxies=proxies)
    return response.content
def extract_image_urls(page_content):
    soup = BeautifulSoup(page_content, "html.parser")
    image_urls = []
    for img in soup.find_all("img"):
        image_urls.append(img["src"])
    return image_urls
def download_and_add_watermark(image_url):
    response = requests.get(image_url)
    image = Image.open(BytesIO(response.content))
    watermark = Image.new("RGBA", image.size, (0, 0, 0, 0))
    draw = ImageDraw.Draw(watermark)
    font = ImageFont.truetype("arial.ttf", 36)
    draw.text((10, 10), "Watermark", font=font, fill=(255, 255, 255, 128))
    watermarked_image = Image.alpha_composite(image.convert("RGBA"), watermark)
    watermarked_image.save("watermarked_image.png")
def main():
    # 获取网页的页面内容
    page_content = fetch_page("https://www.58pic.com/")
    # 提取图片元素的URL
    image_urls = extract_image_urls(page_content)
    # 下载图片并添加水印
    for image_url in
相关文章
|
2天前
|
数据采集 UED Python
如何应对动态图片大小变化?Python解决网页图片截图难题
随着互联网技术的发展,电商平台如京东(JD.com)广泛采用动态内容加载技术,给爬虫获取商品图片带来挑战:图片无法直接保存,尺寸动态变化,且存在反爬机制。本文介绍如何利用Python结合代理IP、多线程技术解决这些问题,通过Selenium和Pillow库实现动态网页图片的屏幕截图,有效绕过反爬措施,提升数据抓取效率和稳定性。具体步骤包括设置代理IP、使用Selenium抓取图片、多线程提升效率以及设置cookie和user-agent伪装正常用户。实验结果显示,该方法能显著提升抓取效率,精准截图保存图片,并成功绕过反爬机制。
|
3天前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
77 0
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
15天前
|
移动开发 Python Windows
python编程获取网页标题title的几种方法及效果对比(源代码)
python编程获取网页标题title的几种方法及效果对比(源代码)
|
22天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
50 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
1天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
|
4天前
|
数据采集 自然语言处理 Python
用 Python 生成并识别图片验证码
用 Python 生成并识别图片验证码
11 1
|
1月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
59 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
15天前
|
数据采集 开发者 Python
Python之怎么爬取图片网站
Python之怎么爬取图片网站
|
15天前
|
Python
Python实现图片的拼接
Python实现图片的拼接
10 1
|
24天前
|
数据采集 存储 数据挖掘
如何利用Python进行网页数据抓取
本文将详细介绍如何使用Python进行网页数据抓取。首先,我们将了解什么是网络爬虫以及其基本原理。然后,逐步讲解如何使用Python的requests库和BeautifulSoup库来抓取和解析网页数据。最后,通过实例展示如何实际应用这些技术来获取所需的数据并进行简单的数据处理。希望通过这篇文章,读者能够掌握基本的网页数据抓取技巧,并能在实际应用中灵活运用。