本文将介绍如何使用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爬取了图片并按照中心进行了分类保存。这个过程可以用于批量下载图片并进行分类整理。