pip3 install selenium
ctrl + Pg Up
이나 메뉴-도움말-브라우저 정보(예: 크롬 정보)에서 웹드라이버 버전 확인 후 버전에 맞는 드라이버 설치
압축 풀기 (반드시 아래 경로에 압축풀기)
해당 경로가 아닌 곳에 풀어줄 경우 셀레니움 실행할 때마다 드라이버 경로를 적어줘야 한다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
import os
search = "검색어"
count = 크롤링할 이미지 수
saveurl = "이미지를 저장할 폴더"
## 셀레니움으로 구글 이미지 접속 후 이미지 검색
options = webdriver.ChromeOptions()
options.headless = True
options.add_argument("window-size=1920x1080")
driver = webdriver.Chrome('chromedriver.exe의 경로') # options=options
driver.get("크롤링하고자하는 주소")
elem = driver.find_element(By.NAME, "q")
elem.send_keys(search)
elem.send_keys(Keys.RETURN)
# 페이지 끝까지 스크롤
SCROLL_PAUSE_TIME = 10
# 스크롤 깊이 측정하기
last_height = driver.execute_script("return document.body.scrollHeight")
# 끝까지 스크롤
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 페이지 로딩 대기
time.sleep(SCROLL_PAUSE_TIME)
# 더 보기 요소 있을 경우 클릭하기
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
try:
driver.find_element(By.CSS_SELECTOR, ".mye4qd").click()
except:
break
last_height = new_height
# 이미지 찾고 다운
images = driver.find_elements(By.CSS_SELECTOR, ".rg_i.Q4LuWd")
for i in range(count):
try:
images[i].click() # 이미지 클릭
time.sleep(1)
imgUrl = driver.find_element(By.CSS_SELECTOR, ".n3VNCb").get_attribute("src")
urllib.request.urlretrieve(imgUrl, saveurl + str(i) + ".jpg") # 이미지 다운
except:
pass
driver.close()
driver.find_element_by_name("q")
가 driver.find_element(By.NAME, "q")
로 변경원인
- 크롬 드라이버의 경로를 제대로 읽어오지 못해서 발생한 문제
해결
- 드라이버 경로를 절대경로로 잡아준다