크롤링(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()
반응형