본문 바로가기
코딩 연습/코딩배우기

[파이썬 크롤링 연습] 쿠팡(Coupang) 상품 리스트 가져오기

by good4me 2021. 12. 12.

goodthings4me.tistory.com

쿠팡(Coupang)에서 상품 리스트 크롤링 해보기

 

쿠팡(Coupang) 검색란에 키워드를 입력(예로, 노트북)하면 많은 상품 리스트가 보인다.

이렇게 검색된 상품 전체를 파이썬 크롤링으로 가져오는 연습을 해보았다.

 

import requests
from bs4 import BeautifulSoup
import pandas as pd


def coupang_products(keyword, pages):
    baseurl = 'https://www.coupang.com'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
    }

    products_link = []
    for page in range(1, pages + 1):
        url =f'https://www.coupang.com/np/search?q={keyword}&channel=user&sorter=scoreDesc&listSize=36&isPriceRange=false&rating=0&page={page}&rocketAll=false'
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.content, 'html.parser')
        products_lis = soup.find('ul', id='productList').find_all('li')
        for li in products_lis:
            a_link = li.find('a', href=True)['href']
            prd_link = baseurl + a_link
            prd_name = li.find('div', class_='name').text
            try:
                base_price = li.find('span', class_='price-info').find('del', class_='base-price').text
            except:
                base_price = ''
            price = li.find('strong', class_='price-value').text

            products_info = {
                'name': prd_name,
                'base_price': base_price,
                'price': price,
                'product_url': prd_link
            }
            products_link.append(products_info)

    print(len(products_link))
    df = pd.DataFrame(products_link)
    print(df)
    df.to_csv('쿠팡_products_list.csv', index=False, encoding='utf-8-sig')

if __name__ == '__main__':
    coupang_products('노트북', 1)

 

good4me.co.kr

 

추출 결과

 

쿠팡의 검색어 입력란의 url은

한 페이지 뿐만 아니라 전체 페이지의 상품 리스트를 가져오려면, 페이지 하단의 페이징 처리 부분에서 최종 페이지 번호를 확인하고, 클릭하여 url을 다시 확인한다. (노트북의 경우 27페이지까지 있음)

https://www.coupang.com/np/search?q=%EB%85%B8%ED%8A%B8%EB%B6%81&channel=user&component=&eventCategory=SRP&trcid=&traid=&sorter=scoreDesc&minPrice=&maxPrice=&priceRange=&filterType=&listSize=36&filter=&isPriceRange=false&brand=&offerCondition=&rating=0&page=1&rocketAll=false&searchIndexingToken=&backgroundColor=

 

위 url 전체를 대상으로 해도 되지만, 값이 있는 부분만을 남기고 키워드 부분과 페이지 번호 부분을 입력받도록 처리하면, 아래와 같다.

url =f'https://www.coupang.com/np/search?q={keyword}1&channel=user&sorter=scoreDesc&listSize=36&isPriceRange=false&rating=0&page={page}&rocketAll=false' 부분이 된다.
 
 
함수 coupang_products('노트북', 1)에서 페이지 번호인 1 대신에 27 입력하면 전체 상품 리스트를 Scraping하여 데이터를 추출한다. 이를 pandas를 통해 csv 파일로 저장해보았다.
 
 

'노트북' 대신 다른 키워드와 페이지 번호를 입력하면, 해당 키워드 상품에 대한 자료를 받아볼 수 있다.

 

댓글