반응형
이전 글에서는, 하나의 품목에 대해서만 크롤링을 진행했는데
이번 글에서는, 반복문을 이용해서 다량의 데이터를 크롤링하는 코드를 작성합니다.
마찬가지로 이마트 홈페이지에서, '생수 / 음료 / 주류' 탭에 들어갑니다.
저번에는 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 파일이 저장된 것을 확인했고, 이를 다운로드하여 엑셀로 열 수 있었습니다.
파이썬은 정말 강력한 툴이라는 것을 느꼈고, 정말 공부 시작하길 잘했다는 생각을 했습니다.
너무 재밌기도 하고... 이전에 공부했던 파이썬 강의자료 다시 봐야겠다.
참고
반응형
'[Python & Ruby]' 카테고리의 다른 글
Python 파이참 셀레니움 드라이버 설치 / 환경 세팅 (1) | 2022.11.20 |
---|---|
Python 크롤링 - 3 / 이마트 크롤링해보기 3 (0) | 2022.11.20 |
Python 크롤링 - 3 / 이마트 크롤링해보기 1 (0) | 2022.11.18 |
Python 크롤링 - 2 / 네이버 메인 홈페이지 크롤링 예시 (0) | 2022.11.18 |
Python 크롤링 - 1 / 라이브러리 종류 (0) | 2022.11.17 |