아 그리고 셀레니움 코드 말고도
키워드 입력 받은 부분까지 코딩되어 있는걸 공유 드립니다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 크롬 드라이버 자동 업데이트
from webdriver_manager.chrome import ChromeDriverManager
import os
import urllib.request
import pyautogui
# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
keyword = pyautogui.prompt("검색어를 입력하세요>>>")
#폴더 만들기
if not os.path.exists(f'2.인프런수업/실전편/05.구글이미지크롤링/{keyword}'):
os.mkdir(f'2.인프런수업/실전편/05.구글이미지크롤링/{keyword}')
# 웹페이지 해당 주소 이동
url = f"https://www.google.com/search?q={keyword}&sxsrf=ALiCzsZlmVXNZ5yaFSLh8_i6CbZtjJWZxw:1651960762167&source=lnms&tbm=isch&sa=X&sqi=2&ved=2ahUKEwivqKWzsc73AhU3xYsBHUsTAC0Q_AUoAXoECAIQAw&biw=1920&bih=961&dpr=1"
#로딩시 대기
driver.implicitly_wait(5)
#창 최대화
driver.maximize_window()
#주소이동
driver.get(url)
time.sleep(1)
#무한스크롤 처리
before_h = driver.execute_script("return window.scrollY")
#무한스크롤
while True:
#맨밑으로 스크로 ㄹ내리기
driver.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)
time.sleep(1)
after_h = driver.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
time.sleep(1)
#썸네일 이미지 이미지 태그 추출
imgs = driver.find_elements(By.CSS_SELECTOR,".rg_i.Q4LuWd")
for i, img in enumerate(imgs, 1):
#각이미지를 클릭해서 큰사이즈 찾음
#셀레니움등 클릭하다보면 element click intercepted 에러의 해결방법
driver.execute_script("arguments[0].click();",img)
# img.click()
time.sleep(1)
#큰이미지 주소 호출
if i == 1:
target = driver.find_elements(By.CSS_SELECTOR,"img.n3VNCb")[0]
else:
target = driver.find_elements(By.CSS_SELECTOR,"img.n3VNCb")[1]
# target = driver.find_element(By.CSS_SELECTOR,"img.n3VNCb")
img_src = target.get_attribute('src')
#이미지 다운로드
#크롤링 하다 보면 HTTP Error 403: Forbidden 에러가 나서
#오프너를 이용한 유저에이전트 추가
opener = urllib.request.build_opener()
opener.add_handler = [('Uesr-Agent', 'Mozila/5.0')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(img_src, f'2.인프런수업/실전편/05.구글이미지크롤링/{keyword}/{i}.jpg')
감사합니다.
친절하시네요 ^^
답글