토막코딩/Python

Python에서 `BeautifulSoup`와 `requests`로 크기 기준 이미지 크롤링 및 다운로드하기

컴곰 2023. 9. 26. 22:02

Python에서 BeautifulSouprequests로 크기 기준 이미지 크롤링 및 다운로드하기


웹페이지의 이미지를 크롤링하는 것은 여러 목적으로 유용할 수 있습니다. 이번 글에서는 Python의 BeautifulSouprequests 라이브러리를 활용하여 웹페이지에서 특정 크기를 초과하는 이미지만 선택적으로 다운로드하는 방법을 소개합니다.

필요한 라이브러리 설치:

먼저 필요한 라이브러리를 설치합니다:

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의 BeautifulSouprequests 라이브러리를 활용하면 웹페이지의 이미지를 크롤링하고 원하는 조건에 따라 다운로드하는 작업을 간단하게 수행할 수 있습니다. 웹 크롤링 시, 항상 웹사이트의 크롤링 정책과 서버 부하를 고려해야 합니다.