首页 > 编程知识 正文

Python爬取图片并分类保存

时间:2023-11-19 11:15:35 阅读:299661 作者:NUWZ

本文将介绍如何使用Python爬取图片并将其按照中心进行分类保存。

一、准备工作

在开始编写代码之前,我们需要导入一些必要的库。

import requests
import os
from urllib.parse import urlparse
from bs4 import BeautifulSoup

二、获取图片链接

首先,我们需要通过网络爬虫的方式获取到图片的链接。这可以通过以下步骤来完成:

1. 指定要爬取的网页链接。

2. 发送GET请求,获取网页内容。

3. 使用BeautifulSoup解析网页内容。

4. 查找包含图片链接的元素,并提取链接。

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
image_links = []
for img in soup.find_all("img"):
    image_links.append(img["src"])

三、下载图片

获取到图片链接之后,我们可以使用Python的requests库来下载这些图片,并将其保存到本地文件夹中。

save_directory = "images"
os.makedirs(save_directory, exist_ok=True)
for link in image_links:
    try:
        response = requests.get(link)
        filename = os.path.join(save_directory, os.path.basename(urlparse(link).path))
        with open(filename, "wb") as f:
            f.write(response.content)
        print("成功下载并保存图片:", filename)
    except:
        print("下载图片出错:", link)

四、图片分类保存

根据题目要求,我们需要根据图片的中心进行分类保存。这可以通过使用OpenCV库来识别图片的中心。

import cv2

def get_center(image_file):
    image = cv2.imread(image_file)
    height, width, _ = image.shape
    center = (width // 2, height // 2)
    return center

for filename in os.listdir(save_directory):
    image_file = os.path.join(save_directory, filename)
    center = get_center(image_file)
    category = "center_{}_{}".format(center[0], center[1])
    category_directory = os.path.join(save_directory, category)
    os.makedirs(category_directory, exist_ok=True)
    new_path = os.path.join(category_directory, filename)
    os.rename(image_file, new_path)

五、总结

通过以上步骤,我们成功地使用Python爬取了图片并按照中心进行了分类保存。这个过程可以用于批量下载图片并进行分类整理。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。