python抓取网页中的图片示例


下面是一个使用Python抓取网页中图片的基本示例。这个示例将使用`requests`库来获取网页内容,并使用`BeautifulSoup`库来解析HTML并找到图片链接。然后,使用`requests`再次下载这些图片到本地。

首先,确保你已经安装了`requests`和`beautifulsoup4`库。如果没有安装,可以通过pip安装它们:


pip install requests beautifulsoup4

然后,你可以使用以下Python脚本来抓取网页中的图片:


import requests
from bs4 import BeautifulSoup
import os

def download_images(url, save_folder='images'):
    # 确保保存图片的文件夹存在
    if not os.path.exists(save_folder):
        os.makedirs(save_folder)

    # 获取网页内容
    response = requests.get(url)
    response.raise_for_status()  # 如果请求失败,则抛出HTTPError异常

    # 解析网页
    soup = BeautifulSoup(response.text, 'html.parser')

    # 查找所有的<img>标签
    images = soup.find_all('img')

    # 遍历图片并下载
    for img in images:
        src = img.get('src')  # 获取图片的URL
        if src:  # 确保src属性存在
            # 构造完整的图片URL(如果src是相对路径)
            if not src.startswith(('http://', 'https://')):
                # 这里假设网站域名是固定的,实际情况可能需要从<base>标签或其他方式获取
                src = f"http://example.com/{src}"

            # 下载图片
            image_response = requests.get(src)
            image_response.raise_for_status()  # 如果下载失败,则抛出HTTPError异常

            # 构造本地文件名(这里简单使用URL的最后一部分)
            filename = os.path.join(save_folder, os.path.basename(src))

            # 保存图片到本地
            with open(filename, 'wb') as file:
                file.write(image_response.content)

            print(f'Downloaded {filename}')

# 示例:抓取某个网页的图片
download_images('http://example.com/some-page-with-images')

**注意**:

- 示例中的`http://example.com/`是一个占位符,你需要将其替换为实际的网页URL。

- 如果图片URL是相对路径,你可能需要构造完整的URL。这通常涉及到获取网页的基URL(可以从``标签获取,或者通过其他方式推断)。

- 示例中简单地使用URL的最后一部分作为文件名,这可能会导致文件名冲突。在实际应用中,你可能需要实现更复杂的命名策略。

- 示例代码没有处理重定向、HTTPS证书验证等问题,你可能需要根据实际情况进行调整。