본문 바로가기

개발 이야기/파이썬 개발

파이썬 셀레니움 이미지 크롤링 예제 코드

728x90

조코딩님의 [파이썬 셀레니움 이미지 크롤링으로 배우는 업무 자동화의 기초] 강의를

보며 정리한 글입니다.

 

강의 링크는

  하기와 같습니다.

  :=> www.youtube.com/watch?v=1b7pXC1-IbE&list=PLU9-uwewPMe2-vtJAgWB6SNhHcTjJDgEO&index=2

 

selenium 설치 및 작동 확인

  1. 가상환경 설치
  2. 가상환경으로 interpreter 변경
  3. selenium 설치
  4. webdriver-manager 설치
  5. google.py 생성 후 아래 코드 입력

google.py 소스는 하기와 같습니다.

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request

 
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
#selenium의 webdriver로 크롬 브라우저를 실행한다
driver = webdriver.Chrome("./chromedriver", options = options)
driver.maximize_window() 
 
#"Google"에 접속한다
driver.get("https://www.google.co.kr/imghp?hl=ko&ogbl")
 
#페이지의 제목을 체크하여 'Google'에 제대로 접속했는지 확인한다
assert "Google" in driver.title
#assert "Naver" in driver.title
 
#검색 입력 부분에 커서를 올리고
#검색 입력 부분에 다양한 명령을 내리기 위해 elem 변수에 할당한다
elem = driver.find_element_by_name("q")
elem .send_keys("오픈서포트") 
elem.submit()


prev_height = driver.execute_script("return document.body.scrollHeight")
# 웹페이지 맨 아래까지 무한 스크롤
while True:
    # 스크롤을 화면 가장 아래로 내린다
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    
    # 페이지 로딩 대기
    time.sleep(2)

    # 현재 문서 높이를 가져와서 저장
    curr_height = driver.execute_script("return document.body.scrollHeight")
    if(curr_height == prev_height):
        try:
            driver.find_element_by_css_selector(".mye4qd".click())
        except:
            break
    prev_height = curr_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_css_selector(".n3VNCb").get_attribute("src")
        imgUrl = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div/div[2]/a/img').get_attribute("src")
        opener=urllib.request.build_opener()
        opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
        urllib.request.install_opener(opener)
        urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
        count = count + 1
    except:
        pass

driver.close()


# #입력 부분에 default로 값이 있을 수 있어 비운다
# elem.clear()
 
# #검색어를 입력한다
# elem.send_keys("Selenium")
 
# #검색을 실행한다
# elem.submit()
# #elem.send_keys("Keys.RETURN")

# #검색이 제대로 됐는지 확인한다
# assert "No results found." not in driver.page_source
 
# #브라우저를 종료한다
# #driver.close()

 

본 소스의 내용은 

  유튭 강의 링크를 참고하시면 됩니다.

  참고로 깃허브의 소스 링크는 하기와 같이.

    :=> github.com/freeNanum/selenium-image-crawling/blob/main/google.py

 

우선, 강의대로 그대로 진행하면 안되는 부분이 있고

  에러가 나서 이를 해결하기 위한 부가적인 코드를 추가하여

    작성되었습니다.

 

현재 2021년 5월 기준으로 잘 작동되는 것을 확인하였습니다.

또 이 글을 보고 코드를 가져다 사용할 때

   문제가 되는점이 있다면 알려주시길 바랍니다.

 

(추가업데이트)

국내 개발자 커뮤니티 모아보기 앱이 있습니다.

'데브모아' 라는 앱인데 하기에서 다운로드 가능합니다.

:=> https://play.google.com/store/apps/details?id=com.opensupport.DevMoa

 

데브모아 (한국의 개발자들 모두 모여라!) - Google Play 앱

한국의 개발자 커뮤니티를 모아서 보자!

play.google.com

 

 

본 게시글은 

  추후 계속 업데이트 됩니다.