본문 바로가기

Coding Study/Python

( Python ) 지마켓 베스트 카테고리 - 상품명, 가격 중복 크롤링하기

728x90
반응형

오늘은 지마켓의 베스트 100 > 베스트 > 패션의류 카테고리의 상품명, 가격, 할인율 100개를 크롤링하는 예제 소스를 작성해 보도록 하겠습니다. 해당 페이지의 크롤링에서는 한번 크롤링한 데이터를 리스트에 담아 다시 크롤링하는 방법을 사용해야 합니다.

 

지마켓 베스트 100 > 패션의류 페이지 소스보기 화면

위의 소스보기 화면을 보면 div 태그의 class 속성 중에 best-list 가 2개가 존재하는 것을 알 수 있다. 이로 인해 상품명을 크롬 개발자 도구에서 CSS Selector를 이용하여 상품명을 크롤링을 할 수가 없습니다. 아래 code에서 best-list class를 모두 가져와서 그중 두 번째 class를 새로운 변수에 저장하고 bestitem 변수에 상품명이 있는 태그를 다시 저장합니다.

 

import requests
from bs4 import BeautifulSoup

res = requests.get('http://corners.gmarket.co.kr/Bestsellers?viewType=G&groupCode=G01')
soup = BeautifulSoup(res.content, 'html.parser')

product_name = soup.select('div.best-list')
# div 태그 중 class 가 best-list 인 것을 모두 출력.
product_names = product_name[1]
# 크롤링한 best-list class 중 두번째 class를 product_names 변수에 저장한다.
# 상품명, 가격이 존재하는 best-list class가 index 두번째이다.
bestitem = product_names.select('ul > li')

for index, item in enumerate(bestitem):
    title1 = item.select_one('a.itemname')
    # 상품명 추출
    price1 = item.select_one('div.s-price')
    # 가격, 할인율 추출
    print(str(index+1)+'.', title1.get_text(), price1.get_text())
    # index 변수를 통해 크롤링한 상품명 카운팅
    # index 변수가 int type이므로 str type으로 변경 후 특수문자 '.' 과 결합하여 출력.

 

728x90
반응형