欢迎访问宙启技术站
智能推送

使用Python编写脚本自动下载网页上的图片

发布时间:2023-12-04 08:13:04

当我们在浏览网页时,经常会遇到需要下载网页上的图片的场景。为了提高效率,我们可以使用Python编写脚本自动下载网页上的图片。

首先,我们需要安装一个用于发送HTTP请求的库,比如requests库。可以使用以下命令安装:

pip install requests

安装完成后,我们就可以开始编写脚本了。下面是一个简单的例子:

import requests
import os

def download_image(url, save_dir):
    response = requests.get(url)
    if response.status_code == 200:
        # 使用图片的URL最后一部分作为保存的文件名
        file_name = url.split('/')[-1]
        save_path = os.path.join(save_dir, file_name)
        with open(save_path, 'wb') as f:
            f.write(response.content)
        print(f'Downloaded: {file_name}')
    else:
        print(f'Failed to download image: {url}')

if __name__ == '__main__':
    # 图片的URL
    image_url = 'http://example.com/image.jpg'
    # 保存的目录
    save_directory = './images'
    # 创建保存的目录(如果不存在)
    os.makedirs(save_directory, exist_ok=True)

    # 调用下载函数
    download_image(image_url, save_directory)

这里的download_image函数接受两个参数:图片的URL和保存的目录。函数首先发送一个GET请求获取图片的数据,然后将数据写入到文件中保存。

使用时,只需要将要下载的图片的URL和需要保存的目录传递给download_image函数即可。这个脚本会自动创建保存的目录(如果不存在),并将图片下载保存到该目录下。

下面是一个完整的例子来下载网页上的多张图片:

import requests
import os

def download_image(url, save_dir):
    response = requests.get(url)
    if response.status_code == 200:
        # 使用图片的URL最后一部分作为保存的文件名
        file_name = url.split('/')[-1]
        save_path = os.path.join(save_dir, file_name)
        with open(save_path, 'wb') as f:
            f.write(response.content)
        print(f'Downloaded: {file_name}')
    else:
        print(f'Failed to download image: {url}')

if __name__ == '__main__':
    # 要下载的网页的URL
    page_url = 'http://example.com/'
    # 保存的目录
    save_directory = './images'
    # 创建保存的目录(如果不存在)
    os.makedirs(save_directory, exist_ok=True)

    # 发送GET请求获取网页内容
    response = requests.get(page_url)
    if response.status_code == 200:
        # 使用正则表达式匹配出图片的URL
        import re
        pattern = r'<img[^>]*src=[\"|\'](.*?)[\"|\'][^>]*>'
        image_urls = re.findall(pattern, response.text)

        # 下载每张图片
        for url in image_urls:
            # 如果图片的URL是相对路径,则拼接完整的URL
            if not url.startswith('http'):
                url = page_url + url
            download_image(url, save_directory)
    else:
        print(f'Failed to load page: {page_url}')

这个脚本首先会发送一个GET请求获取网页的内容,然后使用正则表达式匹配出网页中所有的图片URL。接着,循环遍历每个图片的URL,调用download_image函数进行下载。

可以看到,通过编写简单的Python脚本,我们可以自动下载网页上的图片,从而提高工作效率。