+ Hello +

[스마트인재개발원] [웹 크롤링] Gmarket Top 100 가져오기 본문

+ 스마트인재개발원 +

[스마트인재개발원] [웹 크롤링] Gmarket Top 100 가져오기

journeyee 2021. 6. 20. 18:14

1. import 작업해주기

from selenium import webdriver as wb
import pandas as pd
import time

2. 크롬창 불러와서 Gmarket bestseller 창 가져오기

driver = wb.Chrome()
driver.get('http://corners.gmarket.co.kr/Bestsellers')

2-1) 크롬창 들어가는거 보고싶지 않을 때 

options = wb.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1920x1080')
options.add_argument("disable-gpu")

3. BEST 1 제품창 찾아 클릭하기

- 선택자 통해서 접근하기

- copy > copy selector

# 선택자를 통해 접근 : .find_element_by_css_selector()
#gBestWrap > div > div:nth-child(5) > div:nth-child(3) > ul > li:nth-child(1) > a
div= driver.find_element_by_css_selector('p#no'+ str(i)+'+div')

# 해당 상품 클릭
div.click()

4. 제품의 이름, 가격, 카테고리 가져오기

- copy > copy selector

- 복수개 가져올 때 : driver.find_elements_by_css_selector() 사용

이름

 

가격
카테고리

 title = driver.find_element_by_css_selector('h1.itemtit').text
 price = driver.find_element_by_css_selector('strong.price_real').text
 cate = driver.find_element_by_css_selector('div.location-navi > ul > li:last-child > a').text

* category

- li 여러개인데 class는 없을 때 : last-child 사용

- 마우스 오른쪽 > copy selector : body > div.location-navi > ul > li.on > a

5. 1위 페이지에서 나오기

# 페이지 뒤로가기 : .back()
driver.back()

6. 1~5번 과정을 반복하여 1위 ~ 11위의 이름, 가격, 카테고리 수집

driver = wb.Chrome()
driver.get('http://corners.gmarket.co.kr/Bestsellers')
time.sleep(1)

title_list =[]
price_list = []
cate_list = []

for i in range(1,11):
    div= driver.find_element_by_css_selector('p#no'+ str(i)+'+div')
    div.click()
    time.sleep(1)
    
    title = driver.find_element_by_css_selector('h1.itemtit').text
    price = driver.find_element_by_css_selector('strong.price_real').text
    cate = driver.find_element_by_css_selector('div.location-navi > ul > li:last-child > a').text
    
    title_list.append(title)
    price_list.append(price)
    cate_list.append(cate)
    time.sleep(1)
    
    driver.back()
    time.sleep(1)

7. DataFrame으로 만들어주기

title_list
dic = {'상품명' : title_list, '가격':price_list, '카테고리' : cate_list}
pd.DataFrame(dic)

* 1~7번 과정 한번에 작성

# option 쓰려면 Chorme안에 경로 넣기('C:\Users\SM2129\크롤링')
driver = wb.Chrome('C:/Users/SM2129/크롤링/chromedriver.exe', chrome_options=options)
driver.get('http://corners.gmarket.co.kr/Bestsellers')
time.sleep(1)

title_list =[]
price_list = []
cate_list = []

for i in range(1,11):
    div= driver.find_element_by_css_selector('p#no'+ str(i)+'+div')
    div.click()
    time.sleep(1)
    
    title = driver.find_element_by_css_selector('h1.itemtit').text
    price = driver.find_element_by_css_selector('strong.price_real').text
    cate = driver.find_element_by_css_selector('div.location-navi > ul > li:last-child > a').text
    
    title_list.append(title)
    price_list.append(price)
    cate_list.append(cate)
    time.sleep(1)
    
    driver.back()
    time.sleep(1)
dic = {'상품명' : title_list, '가격':price_list, '카테고리' : cate_list}
pd.DataFrame(dic)

 

위 과정은 스마트인재개발원 수업 내용입니다.

http://www.smhrd.or.kr/

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments