본문 바로가기
[Python & Ruby]

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

by Hevton 2022. 11. 19.
반응형

 

이전 글에서는, 하나의 품목에 대해서만 크롤링을 진행했는데

이번 글에서는, 반복문을 이용해서 다량의 데이터를 크롤링하는 코드를 작성합니다.

 

마찬가지로 이마트 홈페이지에서, '생수 / 음료 / 주류' 탭에 들어갑니다.

 

저번에는 1페이지의 가장 첫번째 상품명의 XPath를 복사했었는데

이번에는 1페이지의 가장 마지막 상품명의 Xpath를 복사합니다.

 

그리고 이 둘을 비교해봅시다.

태그 상의 규칙 찾기

첫번째 상품명 : '//*[@id="ty_thmb_view"]/ul/li[1]/div[2]/div[2]/div/a/em[1]'
마지막 상품명 : '//*[@id="ty_thmb_view"]/ul/li[80]/div[2]/div[2]/div/a/em[1]'

li 가 1에서 80까지인 것을 확인할 수 있다.

 

이렇게 규칙성을 찾아볼 수 있습니다.

그렇기에 이를 코드로 간단하게 작성할 수도 있습니다.

 

이전 글에서, 상품명 뿐만 아니라 상품가격도 했듯이

이번에도 마찬가지로 같은 방식으로 상품 가격도 코드로 작성해줍니다.

#이 부분은 처음 한번만 실행하면 됌.
!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
 
#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)


# 태그 상의 규칙 찾기

# 첫번째 상품명 : '//*[@id="ty_thmb_view"]/ul/li[1]/div[2]/div[2]/div/a/em[1]'
# 마지막 상품명 : '//*[@id="ty_thmb_view"]/ul/li[80]/div[2]/div[2]/div/a/em[1]'

# li 가 1에서 80까지인 것을 확인할 수 있다.


product_list = []
price_list = []


# 1 ~ 80
for i in range(1, 81):
  product_name = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li['+ str(i) + ']/div[2]/div[2]/div/a/em[1]')
  product_price = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li[' + str(i) + ']/div[2]/div[3]/div/em')
  product_list.append(product_name.text)
  price_list.append('' + product_price.text + '원')


# 차트 형태로 보여줌
df = pd.DataFrame({'상품명' : product_list, '가격' : price_list})

 

product_list 리스트를 선언하여 상품명들을 받아왔고

price_list 리스트를 선언하여 상품가격들을 받아왔습니다.

 

그리고 이를 판다스 라이브러리(import pandas as pd)를 활용하여

차트 형태로 볼 수 있습니다.

그리고 파이썬이 정말 강력한 도구인 것이,, 이것을 단 한줄로 엑셀파일로 저장시킬 수 있습니다

# 엑셀 파일로 저장
# 파이썬 진짜 강력한 도구다
df.to_excel('result.xlsx')

 

이렇게 하면, 디스크 상에 엑셀 파일이 저장됩니다.

저는 구글 코랩을 이용하였기에 클라우드 상에 result 파일이 저장된 것을 확인했고, 이를 다운로드하여 엑셀로 열 수 있었습니다.

 

파이썬은 정말 강력한 툴이라는 것을 느꼈고, 정말 공부 시작하길 잘했다는 생각을 했습니다.

너무 재밌기도 하고... 이전에 공부했던 파이썬 강의자료 다시 봐야겠다.

 

 

참고

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

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

반응형