设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 316|回复: 0
收起左侧

[其他情况] import requests from bs4 import BeautifulSoup from PIL import Image, ImageDra...

[复制链接]
发表于 2023-10-12 16:48:17 | 显示全部楼层 |阅读模式
数字时代,图片已经成为我们生活中的一部分。无论是社交媒体上的照片,还是网页中的图片元素,我们都希望能够方便地下载并进行个性化的处理。
假设你是一位设计师,你经常需要从网页上下载大量的图片素材,并为这些图片添加水印以保护你的作品。然而,手动下载和添加水印是一件繁琐的事情 ,这时就可以通过编写一个Python爬虫程序,自动化地完成这个任务,节省时间和精力。
我们的基本思路是通过发送HTTP请求获取网页内容,然后解析网页内容,提取出图片元素的URL。接下来,我们使用请求库下载这些图片,并使用Pillow库添加水印。最后,我们将处理后面的图片保存到本地。
在开始之前,我们需要准备以下工作:
  • 安装Python:确保您的计算机上已经安装了Python Spark语言的最新版本。
  • 安装所需的库:我们将使用requests库来发送HTTP请求,PIL库来处理图片。你可以使用以下命令来安装这些库:
    1. pip install requests
    2. pip install pillow
    复制代码
    接下来,我们可以定义一个函数来发送HTTP请求并获取页面内容:
    1. def fetch_page(url):
    2.     proxies = {
    3.         "http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
    4.         "https": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
    5.     }
    6.     response = requests.get(url, proxies=proxies)
    7.     return response.content
    复制代码

  • 然后,我们可以编写一个函数来解析页面内容并提取图片元素的URL
    1. from bs4 import BeautifulSoup

    2. def extract_image_urls(page_content):
    3.     soup = BeautifulSoup(page_content, "html.parser")
    4.     image_urls = []
    5.     for img in soup.find_all("img"):
    6.         image_urls.append(img["src"])
    7.     return image_urls
    复制代码
    接下来,我们可以编写一个函数来下载图片并添加水印:
    1. def download_and_add_watermark(image_url):
    2.     response = requests.get(image_url)
    3.     image = Image.open(BytesIO(response.content))
    4.     watermark = Image.new("RGBA", image.size, (0, 0, 0, 0))
    5.     draw = ImageDraw.Draw(watermark)
    6.     font = ImageFont.truetype("arial.ttf", 36)
    7.     draw.text((10, 10), "Watermark", font=font, fill=(255, 255, 255, 128))
    8.     watermarked_image = Image.alpha_composite(image.convert("RGBA"), watermark)
    9.     watermarked_image.save("watermarked_image.png")
    复制代码
    实现完整代码[size=1em]
    以下是完整的Python代码:[size=1em]
    [backcolor=var(--lakex-editor-background-primary)]


    1. import requests
    2. from bs4 import BeautifulSoup
    3. from PIL import Image, ImageDraw, ImageFont
    4. from io import BytesIO

    5. proxyHost = "www.16yun.cn"
    6. proxyPort = "5445"
    7. proxyUser = "16QMSOML"
    8. proxyPass = "280651"

    9. def fetch_page(url):
    10.     proxies = {
    11.         "http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
    12.         "https": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
    13.     }
    14.     response = requests.get(url, proxies=proxies)
    15.     return response.content

    16. def extract_image_urls(page_content):
    17.     soup = BeautifulSoup(page_content, "html.parser")
    18.     image_urls = []
    19.     for img in soup.find_all("img"):
    20.         image_urls.append(img["src"])
    21.     return image_urls

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

    31. def main():
    32.     # 获取网页的页面内容
    33.     page_content = fetch_page("https://www.58pic.com/")

    34.     # 提取图片元素的URL
    35.     image_urls = extract_image_urls(page_content)

    36.     # 下载图片并添加水印
    37.     for image_url in
    复制代码










您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-5-3 15:35 , Processed in 0.053825 second(s), 8 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表