Python에서 BeautifulSoup
와 requests
로 크기 기준 이미지 크롤링 및 다운로드하기
웹페이지의 이미지를 크롤링하는 것은 여러 목적으로 유용할 수 있습니다. 이번 글에서는 Python의 BeautifulSoup
와 requests
라이브러리를 활용하여 웹페이지에서 특정 크기를 초과하는 이미지만 선택적으로 다운로드하는 방법을 소개합니다.
필요한 라이브러리 설치:
먼저 필요한 라이브러리를 설치합니다:
pip install beautifulsoup4 requests
이미지 크롤링 및 다운로드 코드:
import requests
from bs4 import BeautifulSoup
import os
URL = 'https://example.com' # 원하는 웹페이지 주소
TARGET_SIZE = 50000 # 바이트 기준 (예: 50KB)
response = requests.get(URL)
soup = BeautifulSoup(response.content, 'html.parser')
# 모든 img 태그 찾기
img_tags = soup.find_all('img')
for img_tag in img_tags:
img_url = img_tag['src']
# 이미지 URL이 상대 경로일 경우
if not img_url.startswith(('http:', 'https:')):
img_url = os.path.join(URL, img_url)
response = requests.get(img_url, stream=True)
# Content-Length를 이용하여 이미지 크기 확인
img_size = int(response.headers.get('Content-Length', 0))
# 이미지 크기가 목표 크기를 초과할 경우 다운로드
if img_size > TARGET_SIZE:
with open(os.path.basename(img_url), 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
주의사항:
- 웹사이트의
robots.txt
를 확인하여 크롤링이 허용되는지 확인해야 합니다. - 크롤링을 너무 빈번하게 실행하지 않도록 주의해야 합니다. 이는 웹 서버에 부담을 줄 수 있습니다.
결론:
Python의 BeautifulSoup
와 requests
라이브러리를 활용하면 웹페이지의 이미지를 크롤링하고 원하는 조건에 따라 다운로드하는 작업을 간단하게 수행할 수 있습니다. 웹 크롤링 시, 항상 웹사이트의 크롤링 정책과 서버 부하를 고려해야 합니다.