使用Python實現網頁中圖片的批次下載和水印新增儲存

mmz_77發表於2023-10-12

數字時代,圖片已經成為我們生活中的一部分。無論是社交媒體上的照片,還是網頁中的圖片元素,我們都希望能夠方便地下載並進行個性化的處理。

假設你是一位設計師,你經常需要從網頁上下載大量的圖片素材,併為這些圖片新增水印以保護你的作品。然而,手動下載和新增水印是一件繁瑣的事情 ,這時就可以透過編寫一個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 = "
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(")
    # 提取圖片元素的URL
    image_urls = extract_image_urls(page_content)
    # 下載圖片並新增水印
    for image_url in



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2988587/,如需轉載,請註明出處,否則將追究法律責任。

相關文章