본문 바로가기

카테고리 없음

[Crawling] 크롤링으로 네이버 이미지 가져오기

반응형

크롤링(crawling)으로 네이버의 이미지 가져오는 법!


1. Import packages

import time
import os

import urllib.request
from bs4 import BeautifulSoup

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

 

2. Browser 및 이미지 Setting

IMAGE = input("검색할 이미지를 입력하세요: ")
CNT = int(input("저장할 이미지 개수를 입력하세요: "))
### Chrome web 사용.
options = webdriver.ChromeOptions()                     # Chrome 창의 옵션을 설정할 수 있는 코드.
options.add_argument('--no-sandbox')                    
options.add_argument('--disable-dev-shm-usage')         
options.add_argument('--headless')                      # headless : Broswer 창을 띄우지 않고 수행 (colab에서는 필수).
# options.add_argument("window-size = 1920,1080")       # window size 설정


browser = webdriver.Chrome(options = options)           # 위 Option을 적용한 Chrome 창을 실행.
browser.maximize_window()                               # browser 창 최대화

 

 

3. 이미지 크롤링

1) 네이버 접속 -> 지정한 이미지 검색 -> 이미지 탭 이동

### 이미지를 검색할 페이지 이동
url = "https://www.naver.com"
browser.get(url)

### 이미지 검색
elem = browser.find_element(By.NAME, "query")
elem.send_keys(IMAGE)
elem.send_keys(Keys.ENTER)
time.sleep(3)   # 검색 완료까지 대기. 

### 이미지 탭 클릭
elem = browser.find_element(By.XPATH, '//*[@id="lnb"]/div[1]/div/ul/li[2]/a')
elem.click()
time.sleep(3)

 

2) 원하는 개수만큼 크롤링 및 브라우저 종료

### 이미지 크롤링
imgs = soup.find_all("img", class_ = "_image _listImage")
img_list = [img_["src"] for img_ in imgs[:CNT]]


### 이미지 저장할 폴더 생성
if not os.path.exists("./naver_img"):
    os.makedirs("./naver_img")

    
### 이미지 저장
print("%d개의 이미지 저장 시작!" % (CNT))
for idx, img_url in enumerate(img_list, 1):
    urllib.request.urlretrieve(img_url, "./naver_img/" + IMAGE + str(idx) + ".jpg")
    print("%d번쩨 이미지 저장 완료" % (idx))


### 브라우저 종료
print("%d개의 이미지 저장 완료 후 브라우저 종료!" % (CNT))
browser.quit()
반응형