데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      구글 이미지 간단 크롤링하기

      chem 23.03.03
      14,863 35 4

      1. 목표

      내가 원하는 이미지를 웹사이트 검색을 통해 수집합니다.


      2. 사용 도구 : Selenium


      3. Selenium 사용 준비

      Python crawling package인 Selenium을 사용하기 위해서는 두가지가 필요합니다.

      1. Selenium에서 사용할 browser에 대한 드라이버

        저는 Selenium 내에서 크롬을 사용할 것이기 때문에 chrome driver를 다운받습니다

        그리고 나서 Selenium package가 있는 python 경로로 옮겨줍니다.

      2. Geckodriver를 다운받습니다.

        저는 Selenium 내에서 크롬을 사용할 것이기 때문에 chrome driver를 다운받습니다


      4. 원하는 이미지 URL selector 획득

      저는 구글에서 이미지 검색 했을 때 바로 나오는 이미지가 아닌 원본 이미지를 가져오고 싶기 때문에 검색했을 때 나오는 이미지와 클릭후 나오는 원본 이미지에 대한 css selector 또는 Xpath경로가 필요합니다.

      이 두가지를 활용하여 해당 Property의 태그 정보를 가져올 수 있기 때문입니다.


      정보를 가져오기 위해서 저는 크롬 개발자도구에서 element select하는 방법을 활용했습니다. (참고링크)

      1. 검색하고 나오는 이미지들에 대한 css selector

        image.png

        검색 후 나오는 이미지 배열은 공통적으로 class=”rg_i”라는 프로퍼티를 동시에 가집니다.


      2. 클릭했을 때 나오는 원본 이미지의 XPath

        image.png


        클릭 후 이미지의 Xpath는 //*[@id="Sva75c"]/div[2]/div/div[2]/div[2]/div[2]/c-wiz/div[2]/div[1]/div[1]/div[2]/div/a/img 입니다

        저는 구글에서 이미지 검색 했을 때 바로 나오는 이미지가 아닌 원본 이미지를 가져오고 싶기 때문에 검색했을 때 나오는 이미지와 클릭후 나오는 원본 이미지에 대한 css selector 또는 Xpath경로가 필요합니다.

        이 두가지를 활용하여 해당 Property의 태그 정보를 가져올 수 있기 때문입니다.


      5. Crawling code 작성

      위에서 얻은 property 정보를 활용하여 Crawling을 code를 작성합니다.

      모듈 임포트

      import requests

      from selenium import webdriver

      from bs4 import BeautifulSoup

      from selenium.webdriver.common.by import By

      import time

      import json

      크롬 옵션

      chrome_options = webdriver.ChromeOptions()

      chrome_options.binary = '/Users/chemseok/miniforge/envs/epicone/bin/chromedriver'

      검색할 쿼리

      query = '루피'

      구글 드라이버에 루피 검색

      driver = webdriver.Chrome()

      driver.get(f'https://www.google.com/imghp')

      Search my query

      search_bar = driver.find_element(By.NAME,"q")

      search_bar.send_keys(query)

      search_bar.submit()

      그림이 한번에 다 나오지 않으므로 스크롤 내리면서 이미지 활성화

      PAUSE_TIME = 2

      last_hegiht = driver.execute_script("return document.body.scrollHeight")

      new_height = 0

      while True :

      driver.execute_script("window.scrollBy(0,5000)")

      time.sleep(PAUSE_TIME)

      new_height = driver.execute_script("return document.body.scrollHeight")

      if new_height - last_hegiht > 0 :

      last_hegiht = new_height

      continue

      else :

      break

      아까 확인했던 property로 클릭할 image element list 획득

      img_elements = driver.find_elements(By.CSS_SELECTOR,".rg_i")

      해당 이미지들을 클릭하여 필요한 정보 획득

      img_rst = []

      for idx, img in enumerate(img_elements) :

      print(f"{query} : {idx+1}/{len(img_elements)} proceed...")

      try :

      img.click()

      time.sleep(PAUSE_TIME)

      img_element = driver.find_element(By.XPATH,'//*[@id="Sva75c"]/div[2]/div/div[2]/div[2]/div[2]/c-wiz/div[2]/div[1]/div[1]/div[2]/div/a/img')

      img_src = img_element.get_attribute('src')

      img_alt = img_element.get_attribute('alt')

      img_rst.append({

      'alt' : img_alt,

      'src' : img_src

      })

      except :

      pass

      driver.close()

      결과 확인

      print(img_rst)


      6. 결과 확인

      image.png

      하나만 담은 결과입니다. 제목과 img url이 잘 담긴것을 확인할 수 있습니다.


      7. 주의할 점

      상업적인 목적으로 구글 사이트 크롤링 하는 것은 법으로 금지되어있습니다. 잘 확인하고 사용하시길 바랍니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      chem 님의 최신 블로그

      더보기
      동영상 기고하기