Python

python 파이썬 구글 이미지 크롤링 만들기

9D 2022. 8. 31. 12:50
728x90

우선 파이썬 가상환경 selenium 만드는건 이전글에서 확인바라며,

 

https://hjhit.tistory.com/161

 

python 파이썬 가상환경, 셀레니움 selenium 설치방법

구글에 veny 가상환경생성이라 검색하면 첫번째 글에 가상환경 명령어가 나옵니다 터미널에 python -m venv selenium 입력 하면 가상환경이 만들어 집니다 그 후 터미널에서 cd selenium\Scripts 입력하여 폴

hjhit.tistory.com

 

dirver.get 부분에 구글이미지 주소를 입력해줍니다

 

그후 구글이미지 홈페이지에서

검색창에 해당하는 부분 소스를 확인후

위와 같이 elem. = driver.fined_element(by.name,"q") 라고 입력하면 해당부분을 찾고

 

elem.send_keys("원하는검색어") 입력하면 위 스크린샷과 같이 자동으로 입력됩니다

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time #이미지같은건 클릭후 시간이 걸리니 딜레이사용
import urllib.request

driver = webdriver.Chrome()
elem = driver.find_element(By.NAME, "q") #검색창을 찾는기능 구글홈페이지 검색창은 q라고 네임이 되어있음
elem.send_keys("korea") #키보드입력값(원하는검색어)
elem.send_keys(Keys.RETURN) #엔터키 입력

SCROLL_PAUSE_TIME = 1

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")[0].click() #클래스니까 . . 으로 입력 후 elements 니까 여러사진중에서 [몇번쨰사진 0]입력.click 클릭
count = 1
for image in images :
    try:
        image.click()
        time.sleep(3) #시간딜레이 3초여유
        imgIrl = driver.find_element_by_css_selector(".n3VNCb").get_attribute("src") #사진하나니까 element, 해당확대사진 f12로 구글 클래스찾아보면 n3vncb 그후 src로 가져올려면 get_attribute
        urllib.request.urlretrieve(imgIrl, str(count) + "test.jpg")
        count = count + 1
    except:
        pass

driver.close()



# assert "Python" in driver.title
# elem = driver.find_element(By.NAME, "q")
# elem.clear()
# elem.send_keys("pycon")
# elem.send_keys(Keys.RETURN)
# assert "No results found." not in driver.page_source
# driver.close()
 

 

728x90