TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 업무 자동화>

[이미지 웹스크래핑] 웹스크래핑으로 네이버에서 이미지 다운 받기

by 기록자_Recordian 2024. 9. 5.
728x90
반응형
수행 목적 및 내용

 

개인적으로 진행 중인 프로젝트가 있는데, 다양한 대량의 이미지를 수집하여 CNN을 통한 이미지 분석을 진행하려고 한다.

CNN 딥러닝을 통한 이미지 분석 모델 구현 이전에, 학습할 수 있는 대량의 이미지가 필요하다.

 

따라서, 다량의 이미지를 수집해야 해서 네이버에서 웹 스크래핑으로 이미지를 다운받으려고 한다.

(처음에는 구글에서 시도하려 하였으나, 구글은 웹 스크래핑 차단으로 실행이 안 된다.)


구글 웹 스크래핑 코드

 

기존에 네이버 뉴스 댓글 수집 시 사용했던 코드 + 챗 gpt를 활용하여 이미지를 크롤링하고 내 컴퓨터에 다운 받을 수 있는 코드를 생성하였다. (코드는 구글 기준)

# 필요한 라이브러리 가져오기
from tqdm.notebook import tqdm 
import urllib.request
import time
import requests
from bs4 import BeautifulSoup
import os

from PIL import Image
import platform
import matplotlib.pyplot as plt

# 한글 폰트 문제 해결
path = "c:/Windows/Fonts/malgun.ttf"

from matplotlib import font_manager, rc
if platform.system() == 'Windows':
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
else:
    print('Sorry')

# 마이너스 기호 깨짐 문제 해결
plt.rcParams['axes.unicode_minus'] = False

# 이미지 저장할 폴더 만들기
def create_folder(directory):
    if not os.path.exists(directory):
        os.makedirs(directory)

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
    except Exception as e:
        print(f"Could not download {url} - {e}")

# 이미지 스크래핑 함수 (구글 이미지 검색)
def scrape_images(search_query, num_images, folder_name):
    create_folder(folder_name)
    search_query = search_query.replace(' ', '+')
    url = f"https://www.google.com/search?q={search_query}&tbm=isch"
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
    }
    
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    img_tags = soup.find_all('img')
    
    count = 0
    for img_tag in tqdm(img_tags, desc="Downloading images"):
        img_url = img_tag.get('src')
        if img_url and 'http' in img_url:
            download_image(img_url, folder_name, f"{search_query}_{count}.jpg")
            count += 1
            if count >= num_images:
                break

# 상태 진행 바 설치 확인
!pip show ipywidgets
!pip install ipywidgets --upgrade

# 예시 사용법
scrape_images('car tire', 50, 'tire_images')

 

[코드 설명]

주요 변경점:

  1. 이미지 다운로드 관련 함수 추가:
    • download_image: 이미지를 다운로드하고 지정된 폴더에 저장하는 함수.
    • scrape_images: 구글 이미지 검색 결과에서 이미지를 스크래핑하는 함수.
  2. tqdm 진행 바 적용: tqdm을 사용하여 이미지 다운로드 시 상태 진행 바를 보여준다.
  3. 기타 설정:
    • 폴더 생성 함수 create_folder를 통해 이미지를 저장할 디렉토리를 미리 만든다.
    • BeautifulSoup을 사용해 구글 이미지 검색 페이지에서 이미지 태그(img 태그)를 찾고, 각 이미지의 src 속성에서 URL을 가져온다.

설명:

  • 이 코드로 구글 이미지 검색에서 'car tire'라는 검색어로 50개의 이미지를 다운로드.
  • 다운로드한 이미지는 tire_images 폴더에 저장.

이렇게 코드를 수정하면 원하는 이미지 파일을 수집할 수 있다.

 

▶ 그러나, 이미 다운로드 된 이미지 파일이 저장될 수 있는 폴더를 생성해두었으므로, 해당 경로에 이미지들이 저장될 수 있게 변경할 필요성이 있다 생각되었다.


첫 번째 수정 - 파일 저장 경로 수정 + 불필요한 코드 삭제

 

이미지를 특정 폴더 경로에 저장하도록 설정하려면, scrape_images 함수에서 folder_name을 절대 경로로 지정해주면 된다. 요청하신 경로에 이미지를 저장하도록 수정한 코드는 아래와 같다.

또한, 불필요한 코드들을 제거하고, 이미지 파일 다운로드에 관련된 코드만 남긴 버전은 아래와 같다

# 필요한 라이브러리 가져오기
from tqdm.notebook import tqdm
import requests
from bs4 import BeautifulSoup
import os
import time

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        start_time = time.time()  # 이미지 다운로드 시작 시간 기록
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
        elapsed_time = time.time() - start_time  # 다운로드 소요 시간 계산
        print(f"Downloaded {file_name} in {elapsed_time:.2f} seconds")
    except Exception as e:
        print(f"Could not download {url} - {e}")

# 이미지 스크래핑 함수 (구글 이미지 검색)
def scrape_images(search_query, num_images, folder_name):
    search_query = search_query.replace(' ', '+')
    url = f"https://www.google.com/search?q={search_query}&tbm=isch"
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
    }
    
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    img_tags = soup.find_all('img')
    
    count = 0
    for img_tag in tqdm(img_tags, desc="Downloading images"):
        img_url = img_tag.get('src')
        if img_url and 'http' in img_url:
            download_image(img_url, folder_name, f"{search_query}_{count}.jpg")
            count += 1
            if count >= num_images:
                break

# 이미지 저장 경로를 절대 경로로 지정하여 이미지 다운로드 수행
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\Tire tread images"
scrape_images('car tire', 50, folder_path)

 

[코드 설명]

 

1. 불필요한 라이브러리 및 코드 삭제:
urllib.request, Image, platform, matplotlib, font_manager, rc, WordCloud, Okt, numpy, pandas 등 이미지를 다운로드하는 데 필요하지 않은 라이브러리 및 관련 설정을 제거했다.

 

2. 핵심 기능만 남김:
이미지 파일을 저장하는 폴더 생성, 이미지 URL을 스크래핑, 이미지를 다운로드하는 코드만 남겨두었다.
이제 이 코드는 구글 이미지 검색에서 원하는 이미지를 스크래핑하고, 지정한 경로에 이미지 파일을 저장하는 간단한 스크립트이다.

 

3. 폴더 생성 함수 제거:
폴더 생성 함수인 create_folder를 삭제했다. 요청한 경로가 이미 존재한다고 가정하고, 해당 경로로 바로 이미지를 저장.

 

동작:
이 코드는 이미지 다운로드 시간 측정 기능을 추가했고, 지정된 경로에 이미지를 저장할 수 있다.


두 번째 수정 - 셀레니움을 활용한 웹 스크래핑

 

Selenium은 Google 검색 결과와 같이 JavaScript로 로드되는 동적 콘텐츠를 처리할 때 웹 스크래핑을 위한 강력한 도구이다. Selenium을 사용하면 브라우저를 자동화하여 페이지를 완전히 로드하고 사용자처럼 상호 작용할 수 있다. 다음은 Selenium을 사용하여 Google 이미지 검색 페이지에서 이미지를 긁어내는 코드이다.

 

먼저 필요한 라이브러리 설치

pip install selenium webdriver-manager tqdm

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tqdm.notebook import tqdm
import time
import requests
import os

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        start_time = time.time()  # 이미지 다운로드 시작 시간 기록
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
        elapsed_time = time.time() - start_time  # 다운로드 소요 시간 계산
        print(f"Downloaded {file_name} in {elapsed_time:.2f} seconds")
    except Exception as e:
        print(f"Could not download {url} - {e}")

# 구글 이미지 스크래핑 함수 (Selenium 사용)
def scrape_images(search_query, num_images, folder_name):
    # 구글 이미지 검색 URL
    search_url = f"https://www.google.com/search?q={search_query}&tbm=isch"

    # Selenium Chrome WebDriver 설정
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 브라우저 창을 띄우지 않고 실행
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    # WebDriver 실행
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    driver.get(search_url)

    # 페이지가 로드될 때까지 기다림
    time.sleep(2)

    # 이미지 태그 찾기
    img_elements = driver.find_elements(By.CSS_SELECTOR, "img")
    
    # 다운로드할 이미지 수 카운트
    count = 0
    for img_element in tqdm(img_elements, desc="Downloading images"):
        try:
            img_url = img_element.get_attribute("src")
            if img_url and 'http' in img_url:
                download_image(img_url, folder_name, f"image_{count}.jpg")
                count += 1
                if count >= num_images:
                    break
        except Exception as e:
            print(f"Error fetching image: {e}")
            continue

    # 브라우저 종료
    driver.quit()

# 이미지 저장 경로 설정
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\Tire tread images"
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 예시: 'tire tread' 검색어로 구글 이미지에서 50개 이미지 스크래핑
scrape_images('tire tread', 50, folder_path)

 

[코드 설명]

1. 셀레니움 설정:

  • WebDriver Manager: ChromeDriver 설치를 자동으로 처리한다.
  • 헤드리스 모드: Selenium은 --headless를 사용하여 눈에 띄는 브라우저를 열지 않고도 실행할 수 있다. 이렇게 하면 긁는 속도가 빨라진다.
  • 요소 찾기: driver.find_elements(By.CSS_SELECTOR, "img")를 사용하여 이미지를 찾습니다.

2. 이미지 스크래핑:

코드는 img 태그의 src 속성을 사용하여 이미지 URL을 스크랩한다.

그런 다음 '요청' 라이브러리를 사용하여 이미지가 지정된 폴더에 다운로드된다.

 

3. 이미지 다운로드:

이미지는 requests.get()을 사용하여 다운로드되고 로컬 시스템의 지정된 폴더에 저장된다.

 

4. ChromeDriver 설치:
Selenium은 ChromeDriver를 사용하여 브라우저를 제어한다. webdriver-manager 패키지는 올바른 버전의 ChromeDriver를 자동으로 다운로드하고 관리하므로 수동으로 다운로드할 필요가 없다.

5. 코드 실행:
컴퓨터에 Google Chrome이 설치되어 있는지 확인.
코드를 실행하면 Chrome이 헤드리스 모드로 열리고(창이 표시되지 않음) Google 이미지 검색을 통해 '타이어 트레드'를 검색한 후 이미지를 지정된 폴더에 다운로드.

 

6. 주의사항:

  • 동적 콘텐츠: 일부 이미지는 여전히 느리게 로드되거나 스크롤 후에도 로드될 수 있다. 이 스크립트는 더 많은 이미지를 로드하기 위해 페이지를 스크롤하지 않는다. 더 많은 이미지를 스크랩하고 싶다면 자동 스크롤을 추가할 수 있다.
  • 비율 제한: Google에서 스크래핑 활동을 감지하면 귀하의 IP를 차단할 수 있다. 액션 사이에 time.sleep()을 추가하면 이를 방지하는 데 도움이 될 수 있다.

▶ 구글이 아닌 네이버로 변경하여 이미지 수집을진행


세 번쨰 수정 - 네이버 이미지 다운로드

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tqdm.notebook import tqdm
import time
import requests
import os

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        start_time = time.time()  # 이미지 다운로드 시작 시간 기록
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
        elapsed_time = time.time() - start_time  # 다운로드 소요 시간 계산
        print(f"Downloaded {file_name} in {elapsed_time:.2f} seconds")
    except Exception as e:
        print(f"Could not download {url} - {e}")

# Naver 이미지 스크래핑 함수 (Selenium 사용)
def scrape_images(search_query, num_images, folder_name):
    # Naver 이미지 검색 URL
    search_url = f"https://search.naver.com/search.naver?where=image&sm=tab_jum&query={search_query}"

    # Selenium Chrome WebDriver 설정
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 브라우저 창을 띄우지 않고 실행
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    # WebDriver 실행
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    driver.get(search_url)

    # 페이지가 로드될 때까지 기다림
    time.sleep(3)  # 대기 시간 조정 필요할 수 있음

    # 이미지 요소 찾기
    img_elements = driver.find_elements(By.CSS_SELECTOR, "img")

    # 다운로드할 이미지 수 카운트
    count = 0
    for img_element in tqdm(img_elements, desc="Downloading images"):
        try:
            img_url = img_element.get_attribute("src")
            if img_url and 'http' in img_url:
                download_image(img_url, folder_name, f"image_{count}.jpg")
                count += 1
                if count >= num_images:
                    break
        except Exception as e:
            print(f"Error fetching image: {e}")
            continue

    # 브라우저 종료
    driver.quit()

# 이미지 저장 경로 설정
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\Tire tread images"
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 예시: 'tire tread' 검색어로 Naver 이미지에서 50개 이미지 스크래핑
scrape_images('tire tread', 50, folder_path)

 

[주요 변경 사항]

  1. 검색 URL:
    • Naver의 이미지 검색 페이지 URL을 사용하여 search_url을 정의. 쿼리 문자열 query를 검색어로 설정.
  2. 이미지 요소 찾기:
    • Naver 이미지 검색 페이지의 img 요소를 찾기 위해 driver.find_elements(By.CSS_SELECTOR, "img")을 사용.
  3. 페이지 로드 대기:
    • 페이지가 완전히 로드될 수 있도록 time.sleep(3)을 추가. 필요에 따라 대기 시간을 조정할 수 있다.

주의 사항:

  • 동적 콘텐츠: Naver 페이지의 이미지가 JavaScript로 동적으로 로드되기 때문에, 이미지가 모두 로드되지 않을 수 있다. 필요 시 페이지를 스크롤하거나 대기 시간을 조정.
  • 페이지 스크롤: 많은 이미지를 다운로드하려면 자동 스크롤 기능을 추가하는 것이 좋다. 이 경우, 페이지를 스크롤하여 더 많은 이미지를 로드할 수 있다.

추가 기능 (페이지 스크롤):

페이지 스크롤을 추가하면 더 많은 이미지를 로드할 수 있다. 필요하면 이 기능을 추가할 수 있다.


네 번째 수정 - 자동 스크롤 기능 추가

 

페이지 하단으로 자동으로 스크롤하고 더 많은 이미지를 로드하려면 스크롤 기능을 포함하도록 Selenium 스크립트를 수정하면 된다. 이렇게 하면 아래로 스크롤할 때 더 많은 이미지를 캡처할 수 있으므로 페이지에서 추가 이미지를 동적으로 로드할 수 있다.

페이지 하단으로의 자동 스크롤을 포함하는 업데이트된 코드는 다음과 같다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tqdm.notebook import tqdm
import time
import requests
import os

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        start_time = time.time()  # 이미지 다운로드 시작 시간 기록
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
        elapsed_time = time.time() - start_time  # 다운로드 소요 시간 계산
        print(f"Downloaded {file_name} in {elapsed_time:.2f} seconds")
    except Exception as e:
        print(f"Could not download {url} - {e}")

# Naver 이미지 스크래핑 함수 (Selenium 사용)
def scrape_images(search_query, num_images, folder_name):
    # Naver 이미지 검색 URL
    search_url = f"https://search.naver.com/search.naver?where=image&sm=tab_jum&query={search_query}"

    # Selenium Chrome WebDriver 설정
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 브라우저 창을 띄우지 않고 실행
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    # WebDriver 실행
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    driver.get(search_url)

    # 페이지가 로드될 때까지 기다림
    time.sleep(3)  # 대기 시간 조정 필요할 수 있음

    # 이미지 요소 찾기
    img_urls = set()  # 중복 URL 방지를 위한 집합
    count = 0

    while count < num_images:
        # 스크롤을 최하단으로 이동
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(2)  # 대기 시간 조정 필요할 수 있음
        
        # 이미지 요소 찾기
        img_elements = driver.find_elements(By.CSS_SELECTOR, "img")
        
        # 이미지 URL 수집
        for img_element in img_elements:
            try:
                img_url = img_element.get_attribute("src")
                if img_url and 'http' in img_url and img_url not in img_urls:
                    img_urls.add(img_url)
                    download_image(img_url, folder_name, f"image_{count}.jpg")
                    count += 1
                    if count >= num_images:
                        break
            except Exception as e:
                print(f"Error fetching image: {e}")
                continue

    # 브라우저 종료
    driver.quit()

# 이미지 저장 경로 설정
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\Tire tread images"
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 예시: 'tire tread' 검색어로 Naver 이미지에서 100개 이미지 스크래핑
scrape_images('tire tread', 100, folder_path)

 

[변경 사항 설명]
1. 스크롤링 메커니즘:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 명령은 페이지를 맨 아래로 스크롤. 그러면 스크롤할 때 추가 이미지가 로드.

 

2. 이미지 로드를 기다리는 중:
스크롤 후 스크립트는 더 많은 이미지를 로드할 수 있도록 2초(time.sleep(2)) 동안 기다린다. 인터넷 속도와 페이지 응답성에 따라 이 지연 시간을 조정.

 

3. 이미지 수집 및 다운로드:
스크립트는 '세트'를 사용하여 고유한 이미지 URL을 수집하고 중복 다운로드를 방지한다.
원하는 이미지 수(num_images)에 도달하면 다운로드가 중지된다.

 

4. 참고:
성능: 페이지에 새 이미지가 로드되는 속도에 따라 스크롤 사이의 절전 시간을 조정.
동적 콘텐츠: 페이지의 복잡성에 따라 모든 이미지가 효과적으로 캡처되도록 추가 조정이 필요할 수 있다.


코드 실행 및 결과

 

주피터 노트북을 켜고, 해당 코드를 입력 하여 실행하였다.

 

이미지가 잘 다운로드 된 것을 확인할 수 있다.

 

이를 토대로 이미지 수집을 진행해야 겠다.

이미지 일부를 보니, 타이어 표면(tire tread)가 아닌 이미지들이 다운 받아지긴 했으나, 이미지 분류 모델 학습을 위해 모든 이미지를 다 저장해놓고, 추후에 모델 구현을 통해 이미지를 분류하는 작업을 진행할 예정이다.


다섯 번째 수정 - 스크래핑 완료 후 멈추는 코드 추가

 

기존의 코드를 토대로 스크래핑을 진행하였고, 하단의 저장 폴더, 검색어 만 수정하여 여러 건의 스크래핑을 수행하였다.

여기서 한 가지 개선할 점을 발견했는데, 그것은 스크래핑이 완료된 후에도 종료하는 코드가 없어 계속 진행되고 있는 것이다. (주피터 노트북에서 모래시계 뜨는 거)

 

그래서, 원하는 수의 이미지를 스크래핑했으면, 자동으로 멈추게끔 코드를 추가해주었다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tqdm.notebook import tqdm
import time
import requests
import os

# 이미지 다운로드 함수
def download_image(url, folder_name, file_name):
    try:
        start_time = time.time()  # 이미지 다운로드 시작 시간 기록
        image_data = requests.get(url).content
        with open(f'{folder_name}/{file_name}', 'wb') as handler:
            handler.write(image_data)
        elapsed_time = time.time() - start_time  # 다운로드 소요 시간 계산
        print(f"Downloaded {file_name} in {elapsed_time:.2f} seconds")
    except Exception as e:
        print(f"Could not download {url} - {e}")

# Naver 이미지 스크래핑 함수 (Selenium 사용)
def scrape_images(search_query, num_images, folder_name):
    # Naver 이미지 검색 URL
    search_url = f"https://search.naver.com/search.naver?where=image&sm=tab_jum&query={search_query}"

    # Selenium Chrome WebDriver 설정
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 브라우저 창을 띄우지 않고 실행
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    # WebDriver 실행
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    driver.get(search_url)

    # 페이지가 로드될 때까지 기다림
    time.sleep(3)  # 대기 시간 조정 필요할 수 있음

    # 이미지 요소 찾기
    img_urls = set()  # 중복 URL 방지를 위한 집합
    count = 0

    while count < num_images:
        # 스크롤을 최하단으로 이동
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(2)  # 대기 시간 조정 필요할 수 있음
        
        # 이미지 요소 찾기
        img_elements = driver.find_elements(By.CSS_SELECTOR, "img")
        
        # 이미지 URL 수집
        for img_element in img_elements:
            try:
                img_url = img_element.get_attribute("src")
                if img_url and 'http' in img_url and img_url not in img_urls:
                    img_urls.add(img_url)
                    download_image(img_url, folder_name, f"image_{count}.jpg")
                    count += 1
                    if count >= num_images:
                        break
            except Exception as e:
                print(f"Error fetching image: {e}")
                continue
        
        # Check if we have enough images
        if count >= num_images:
            print(f"Collected {count} images. Stopping scraping.")
            break

    # 브라우저 종료
    driver.quit()

# 이미지 저장 경로 설정
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\Tire tread images"
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

# 예시: 'tire tread' 검색어로 Naver 이미지에서 50개 이미지 스크래핑
scrape_images('tire tread', 50, folder_path)

 

정지 조건:
while 루프는 수집된 이미지 수가 num_images에 도달할 때까지 계속된다.
각 이미지가 추가된 후 'count'가 증가하고 루프는 'count'가 'num_images'에 도달했는지 확인한다.

 

중단문:
원하는 이미지 수(num_images)에 도달하면 break 문이 루프를 종료하고 스크래핑 프로세스를 중지한다.

 

최종 확인:
루프 후에는 원하는 수의 이미지가 수집되었으며 스크래핑이 중지되었음을 확인하는 메시지가 인쇄된다.
이 코드는 지정된 수의 이미지가 수집되면 스크래핑 프로세스가 자동으로 중지되어 불필요한 연속을 방지한다. 페이지 로드 및 이미지 표시 속도에 따라 'time.sleep' 값을 필요에 따라 조정한다.


다음 과제는..?

 

다음으로 해야 할 미션은, 수집된 이미지들 중 타이어 트레드가 아닌 것이 존재하므로, 이미지 분류를 위한 모델을 구축해야 한다.

728x90
반응형