미니프로젝트

구글에서 파이썬 셀레니움을 통한 이미지 크롤링

728x90

3월 초부터 해결 방법을 알지 못해 손을 놓고 있던 이미지 크롤링을 몇 일 전부터 계속 구글링했다.

뭐가 문제인지 정말 많이 찾아봤었는데 범인은 코랩이었나보다..

 

나는 정말 코랩이를 좋아했는데.. 편하고 인터넷으로 바로 켤 수 있고..

근데 코랩이에서 크롬 드라이브 경로를 넣어도 인식을 못했다.

혹시나 해서 주피터 노트북에 넣고 돌려보니 바로 진행되었다.

내 사라진 시간들은 나의 멍청함이 먹어 치웠나보다 ㅎㅎ

 

www.youtube.com/watch?v=1b7pXC1-IbE

조코딩님의 이미지 크롤링 자료를 2개 봤는데 다른 하나는 구글에서 막아놔서 사용이 불가능 했고, 

셀레니움을 통한 크롤링은 사용이 가능했다.

 

 

# 크롬 드라이브를 다운받아야한다.

chromedriver.chromium.org/downloads

 

셀레니움을 설치한다.

!pip install selenium

다음은 코드이다.

from selenium import webdriver
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs
from urllib.parse import quote_plus
from selenium.webdriver.common.keys import Keys
import time
import urllib.request


driver = webdriver.Chrome('C:\chromedriver_win32 (1)\chromedriver') # 여기에 크롬드라이브 다운로드 받은 경로를 입력한다.
driver.get("https://www.google.co.kr/imghp?hl=ko&ogbl")
elem = driver.find_element_by_name("q")
elem.send_keys("flying birds")
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")
count = 1
for image in images:
    try: 
        image.click()
        time.sleep(2)
        imgUrl = driver.find_element_by_xpath('/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div/div[2]/a/img').get_attribute("src")
        urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
        count = count + 1
    except:
        pass
 
driver.close()

13번째 줄에 검색하고자 하는 단어를 넣어주면 이미지 크롤링이 가능하다.

 

 

 

 

코드만 갖다 써도 되지만 셀레니움이라는 강력한 웹 자동화툴의 사용법을 배울 수 있으니 듣는 것을 추천한다.

 

 

크롤링을 이제 할 수 있으니까 드론과 새 구분하는 CNN도 프로잭트로 만들어봐야지!

 

 

시작이 반이라고 하는데 반보다 더 온 것 같다.

멈추지 말자.

 

 

 

728x90