IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用 Python 脚本下载指定网页的图片文件

    Teacher Du发表于 2025-05-06 08:20:35
    love 0

    有小伙伴反馈说侧边栏随机图出现了重复,有些审美疲劳,要求杜老师再更新一些图片,正好聊天广场有小伙伴分享了一个美图的网址。本文分享如何使用 Python 脚本下载指定网页的图片文件,需要的小伙伴可以参考文中代码。

    代码需求

    使用 Python 的语言编写一个脚本,下载指定网址中包含的多种格式图片文件,如 JPG 和 PNG 格式图片。

    将图片保存至指定的目录中,可以指定绝对路径,或者相对路径。

    并用随机数重命名,防止同名图片触发覆盖事件。

    尽可能使用 Python 的标准库,尽量避免使用第三方库。

    变更解释

    1. 导入必要的库:包括 os/requests/re 以及 random;

    2. 定义函数:download_images 函数可用于下载图片;

    3. 获取图片链接:使用正则表达式从网页内容中提取图片 URL;

    4. 下载保存图片:使用 requests 库下载图片,并且使用 random 库生成随机数作为文件名;

    5. 指定目录:确保保存目录存在,如果不存在则创建;

    6. 获取内容:使用 requests 库获取网页内容。

    功能代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    import os
    import requests
    import re
    import random

    def download_images(url, save_folder):
    # 确保保存目录存在
    if not os.path.exists(save_folder):
    os.makedirs(save_folder)

    # 发送HTTP请求获取网页内容
    response = requests.get(url)
    if response.status_code != 200:
    print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
    return

    # 使用正则表达式查找所有的图片URL
    image_urls = re.findall(r'<img[^>]+src=["\'](.*?)["\']', response.text)

    for img_url in image_urls:
    # 处理相对路径的URL
    if not img_url.startswith(('http://', 'https://')):
    img_url = os.path.join(url, img_url)

    # 下载图片
    img_response = requests.get(img_url)
    if img_response.status_code == 200:
    # 生成随机文件名
    random_filename = f"{random.randint(10000, 99999)}.jpg"
    save_path = os.path.join(save_folder, random_filename)

    # 保存图片
    with open(save_path, 'wb') as f:
    f.write(img_response.content)
    print(f"Downloaded and saved {img_url} as {save_path}")
    else:
    print(f"Failed to download {img_url}. Status code: {img_response.status_code}")

    # 读取网址列表文件
    def read_urls_from_file(file_path):
    with open(file_path, 'r') as file:
    urls = file.readlines()
    return [url.strip() for url in urls]

    # 示例调用
    if __name__ == "__main__":
    urls_file = 'f:\\代码\\urls.txt' # 包含网址的文件路径
    save_folder = 'f:\\代码\\images' # 保存图片的目录路径

    urls = read_urls_from_file(urls_file)
    for url in urls:
    download_images(url, save_folder)

    注意:本示例代码仅适用于 Python 3.x 版本,运行于 Windows 系统。如使用 Linux 系统,可能需要进行相应修改。

    使用说明

    将上述的代码保存为 download_images.py 文件。

    在运行脚本时,传入目标网页的 URL 和保存图片的目录路径。

    脚本会自动下载网页中所有图片,并且以随机数命名保存到指定目录中。

    打开的网址保存在一个文件,每行一个网址。



沪ICP备19023445号-2号
友情链接