본문 바로가기
[Python & Ruby]

Python 크롤링 - 3 / 이마트 크롤링해보기 3

by Hevton 2022. 11. 20.
반응형

 

 

저번 글에서는, 이마트 내의 상품명과 상품가격을 for문을 이용해 크롤링하였고

그 데이터를 Pandas 라이브러리를 이용하여 정리하고, 그 결과 데이터를 to_excel() 함수를 이용해 엑셀파일로 저장시키는 작업까지 했습니다.

 

이번에는, 이마트 내의 상품 이미지를 크롤링하여 저장해보는 과정을 진행해봅니다.

 

 

::before, ::after 이런 것은 가상요소로, 실제 태그가 아니므로 무시합니다.

우리는 그 바로 아래 img 태그 부분을 copy Xpath합니다.

 

그리고 우리는 새로운 함수를 사용할 것인데, 그것은 바로 get_attribute() 함수입니다

  image1 = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li['+ str(i) + ']/div[1]/div[2]/a/img[1]')
  image_url = image1.get_attribute('src') # HTML 상의 <img src = '이부분' /> 가져오는 것. 이 값은 서버 내 이미지 경로 url이 될 것임.

주석에 나와있듯이, HTML 상의 <image src = ' 값' ... /> 부분의 값을 가져오기 위해 이러한 작업을 이용합니다.

image_url을 출력해보면 다음과 같은 값을 내뿜게 됩니다.

https://sitem.ssgcdn.com/28/08/49/item/1000011490828_i1_290.jpg

 

자 이제, 저희는 urllib을 이용해서 이 이미지 파일을 다운로드 할 것입니다.

urllib.request.urlretrieve(받아올 이미지 url, 저장할 경로)

이전 글과 마찬가지로 상품의 이미지를 1 ~ 80까지 80개를 받아올 것입니다.

 

그리고 이를 파일로 저장할 것이기에, 저는 크롬 코랩 환경에서 실습을 진행하고 있으므로

image_data 라는 파일을 먼저 만들어준 뒤에, 아래 코드를 실행하면 됩니다.

 

 

#이 부분은 처음 한번만 실행하면 됌.
!pip install selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

 

# -*- coding: UTF-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd
import urllib.request
 
#Colab에선 웹브라우저 창이 뜨지 않으므로 별도 설정한다.
 
options = webdriver.ChromeOptions()
options.add_argument('--headless')        # Head-less 설정
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)
 
#해당 url로 이동. 생수 / 음료 / 주류 코너
url = "https://emart.ssg.com/category/main.ssg?dispCtgId=6000095507" 
driver.get(url)


for i in range(1, 81):
  image1 = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li['+ str(i) + ']/div[1]/div[2]/a/img[1]')
  image_url = image1.get_attribute('src') # HTML 상의 <img src = '이부분' /> 가져오는 것. 이 값은 서버 내 이미지 경로 url이 될 것임.
  urllib.request.urlretrieve(image_url, 'image_data/image' + str(i) +'.jpg') # 서버 내 이미지 url을 통해서 이미지를 다운로드하여 저장

 

실행 결과로 파일들이 잘 저장된 것을 확인할 수 있습니다.

 

 

 

참고

https://www.youtube.com/watch?v=qoPlnY_fPGU 

https://blog.almaden.co.kr/python크롤링데이터

반응형