이미지 크롤링(구글,네이버)

2025. 4. 30. 16:49·프로젝트

똑같은 코드에 구글과 네이버의 태그적인 차이만 있고, 구글이미지크롤링 코드는 사진을 클릭해서 더 큰 사진이 나왔을때 긁어오도록 하였다.
 

💻 Process

  1.  키워드 검색어로 이미지 화면에 접근 한 후 무한스크롤 코드로 스크롤을 끝까지 내린다. 
  2. 클릭 메서드로 이미지를 클릭하고, 클릭 후 나오는 큰 이미지의 태그값을 추출한다.
  3. 앞에 만들어놓았던 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
'프로젝트' 카테고리의 다른 글
  • 개인 프로젝트 - TODO 웹
  • 크몽 작업물 - 인스타그램 팔로워 크롤링(22.09)
  • 크몽 작업물 - 유튜브 크롤링(22.11)
yun_cic
yun_cic
  • yun_cic
    체대생의 개발 기록
    yun_cic
  • 전체
    오늘
    어제
    • 분류 전체보기 (13)
      • 백엔드 (1)
      • 알고리즘 (0)
      • 프로젝트 (4)
      • etc (1)
      • 대외활동 (1)
      • 강의자료 (5)
      • 프론트엔드 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 포트폴리오 페이지
    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    개발자 #코딩 #체대생
    외주
    Python
    크롤링
    Selenium
    Crawling
    bs4
    해커톤
    MySQL
    fastapi
    메모
    todo
    백엔드
    채널톡
    크몽
    KUCC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
yun_cic
이미지 크롤링(구글,네이버)
상단으로

티스토리툴바