똑같은 코드에 구글과 네이버의 태그적인 차이만 있고, 구글이미지크롤링 코드는 사진을 클릭해서 더 큰 사진이 나왔을때 긁어오도록 하였다.
💻 Process
- 키워드 검색어로 이미지 화면에 접근 한 후 무한스크롤 코드로 스크롤을 끝까지 내린다.
- 클릭 메서드로 이미지를 클릭하고, 클릭 후 나오는 큰 이미지의 태그값을 추출한다.
- 앞에 만들어놓았던 os모듈을 이용한 폴더에 저장시켜준다.
💻 작동 영상
💻 코드
from ast import keyword
import pyautogui
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
import urllib.request
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
keyword = pyautogui.prompt("검색어를 입력하세요")
if not os.path.exists(f'{keyword}'):
os.mkdir(f'{keyword}')
url = f"https://www.google.com/search?q={keyword}&sxsrf=ALiCzsarlgKyzcr663z3TiYtH9jtQX2ODg:1659427674279&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiu4rjo2af5AhVCmlYBHXPtDG8Q_AUoAXoECAIQAw"
browser = webdriver.Chrome("C:/chromedriver.exe")
browser.implicitly_wait(10) #10초 기다리기
browser.maximize_window() #전체화면
browser.get(url)
time.sleep(2)
#스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")
#무한 스크롤
while True:
#맨 아래로 스크롤을 내린다.
browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)
#스크롤 사이 페이지 로딩 시간
time.sleep(2)
#스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
#썸네일 이미지 태그 추출
imgs = browser.find_elements(By.CSS_SELECTOR,".rg_i.Q4LuWd")
time.sleep(2)
for i,img in enumerate(imgs,1):
# 이미지 클릭해서 큰 사이즈 찾기
img.click()
time.sleep(1)
#큰 이미지 주소 추출
target = browser.find_element(By.CSS_SELECTOR,"img.n3VNCb.KAlRDb")
img_src = target.get_attribute('src') #선택한 태그에 특정 부분을 가져오기
# 이미지 다운로드
# 크롤링 하다보면 HTTP Error 403 L Forbidden 에러가 날 수 있음
opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent','Mozila/5.0')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(img_src,f'{keyword}/{i}.jpg')
'프로젝트' 카테고리의 다른 글
개인 프로젝트 - TODO 웹 (0) | 2025.04.28 |
---|---|
크몽 작업물 - 인스타그램 팔로워 크롤링(22.09) (0) | 2025.04.28 |
크몽 작업물 - 유튜브 크롤링(22.11) (1) | 2024.11.23 |