본문 바로가기
Python

[Python] 쿠팡 상품 키워드 Top 10 리스트 크롤링, 숏츠 링크 생성 엑셀 파일 저장하기

by 퍼포먼스마케팅코더 2022. 6. 6.
반응형

안녕하세요, 디지털마케팅 코더입니다. 

오늘은 쿠팡파트너스를 하시는데 좀 더 유용한 팁을 알려드리고자 합니다. 이는 쿠팡 상품 키워드 Top 10 검색결과 리스트 를 크롤링하여, 숏츠 링크 생성 후 자동으로 엑셀 파일 저장하기까지의 과정입니다.

 

즉 파이썬을 통한 자동화 과정은 다음과 같습니다. 

 

상품 키워드 입력 -> 키워드 Top 10 순위 상품 정보 리스트 추출 -> 쿠팡 파트너스 숏츠링크 생성 -> 최종 엑셀파일 저장

 

이에 하나씩 코딩으로 살펴볼까요? 이제 하나씩 여러분들께 설명드릴께요.

 

Python 파이썬 상품 키워드 관련 상품 상세정보 크롤링

 

먼저 "선풍기" 라는 키워드를 통해 키워드 각 상품 페이지 내의 정보를 긁습니다.

저는 상품명, 상품가격, 상품리뷰수, 상품구매링크, 상품 이미지를 크롤링해볼려고 합니다. 

 

keywords = ['선풍기'] #키워드 입력

for keyword in keywords :

    ################################# 사이트 호출 #################################
    
    target_url='https://www.coupang.com/np/search?component=&q=' + str(keyword)  + '&channel=user'#URL

    headers = { 'Accept-Language' : 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6,zh;q=0.5',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',
                'Accept-Encoding': 'gzip'
    }

    res = requests.get(url=target_url, headers=headers)
    
    soup = BeautifulSoup(res.text, "html.parser")
    
    # 상품명
    product_name = soup.select('div > div.name')
    
    # 상품가격
    product_price = soup.select('div.price-wrap > div.price > em > strong')
    
    # 상품리뷰 수
    product_review = soup.select('div.other-info > div > span.rating-total-count')
    
    # 상품 구매 링크
    product_link = soup.select('a.search-product-link')
    
    # 상품 이미지
    product_image = soup.select('dt > img')
    #product_images2 = product_images.find('img').get('src')
    #print(product_images2)
    #print(product_images)

 

 

Python 파이썬 상품 키워드 크롤링된 정보 중 Top 10 만 리스트에 담기

 

이후 크롤링된 상품 정보 중 Top 10 리스트만 리스트에 담습니다.

하기의 코딩은 해당 정보를 각각의 리스트 형식을 통해 새로 집어 넣는 방식을 채택했습니다. 

 

    ################################# Top 10만 리스트에 담기 #################################
    
    product_names = [] #상품명
    product_prices = [] #가격
    product_reviews = [] #리뷰
    product_links = [] #구매링크
    product_images = [] #상품이미지

    for name in product_name[:10] :  #상품명 리스트 집어넣기
        p_name = name.text
        p_name = p_name.replace('\n', '') #상품명 필터링1
        p_name = p_name.replace('  ', '') #상품명 필터링2
        p_name = p_name.replace(',', '') #상품명 필터링3
        #p_price = price.text
        #p_review_cnt = re.sub("[()]","", review.text)
        #p_link = "https://coupang.com" + link['href']
        #p_image = image.get('data-img-src')
        product_names.append(p_name)

    for price in product_price[:10] :  #상품가격 리스트 집어넣기
        p_price = price.text
        p_price = p_price.replace(",", "")
        #p_price = price.text
        #p_review_cnt = re.sub("[()]","", review.text)
        #p_link = "https://coupang.com" + link['href']
        #p_image = image.get('data-img-src')
        product_prices.append(p_price)

    for review in product_review[:10] : #상품리뷰 갯수 리스트 집어넣기
        try :
            p_review_cnt = re.sub("[()]","", review.text)
        except :
            p_review_cnt = '0'
        product_reviews.append(p_review_cnt)


    for link in product_link[:10] : #상품구매링크 리스트 집어넣기
        p_link = "https://www.coupang.com" + link['href']
        product_links.append(p_link)


    for image in product_image[:10] : #상품이미지 리스트 집어넣기
        p_image = image.get('data-img-src')
        if p_image is None :
            p_image = image.get('src')
            #print(p_image)
            p_image = p_image.replace("//", "")
            product_images.append(p_image)
        else :
            p_image = p_image.replace("//", "")
            product_images.append(p_image)

 

Python 파이썬 쿠팡파트너스 API 통해 숏츠 링크 생성 (Top 10 기준 )

 

이후 해당 정보 중에 상품 URL을 쿠팡 파트너스 API를 통하여 숏츠 링크로 생성합니다. 이는 하기와 같이 파이썬을 돌려보시면 됩니다. 

 

    coupang_short_urls = [] #쿠팡 숏츠 링크 리스트 담을거

    REQUEST_METHOD = "POST"
    DOMAIN = "https://api-gateway.coupang.com"
    URL = "/v2/providers/affiliate_open_api/apis/openapi/v1/deeplink"

    # Replace with your own ACCESS_KEY and SECRET_KEY
    ACCESS_KEY = "" #키를 입력하세요!
    SECRET_KEY = "" #키를 입력하세요!

    for i in product_links[:10] :
        coupang_link = i #쿠팡링크
        REQUEST = { "coupangUrls": [coupang_link]} #해당 쿠팡링크 받기

        def generateHmac(method, url, api_secret_key, api_access_key):
            path, *query = url.split('?')
            os.environ['TZ'] = 'GMT+0'
            dt_datetime = strftime('%y%m%d', gmtime()) + 'T' + strftime('%H%M%S', gmtime()) + 'Z'  # GMT+0
            msg = dt_datetime + method + path + (query[0] if query else '')
            signature = hmac.new(bytes(api_secret_key, 'utf-8'), msg.encode('utf-8'), hashlib.sha256).hexdigest()

            return 'CEA algorithm=HmacSHA256, access-key={}, signed-date={}, signature={}'.format(api_access_key, dt_datetime, signature)


        authorization = generateHmac(REQUEST_METHOD, URL, SECRET_KEY, ACCESS_KEY)
        url = "{}{}".format(DOMAIN, URL)
        resposne = requests.request(method=REQUEST_METHOD, url=url,
                                    headers={
                                        "Authorization": authorization,
                                        "Content-Type": "application/json"
                                    },
                                    data=json.dumps(REQUEST)
                                    )

        #print(resposne.json())  #확인

        time.sleep(2) #10초마다 한번씩 (총 5분걸림)

        text = resposne.json()
        try :
            text_2 = text['data']
        except :
            text_2 = ['https://www.coupang.com/np/coupangglobal'] #없을시 가짜 리스트 생성
        for i in text_2 :
            try :
                coupang_short_url = i['shortenUrl']
            except :
                coupang_short_url = 'https://link.coupang.com/a/mEezS' #가짜 링크 집어넣기
            print(coupang_short_url) #확인
            coupang_short_urls.append(coupang_short_url)

    print("최종 숏츠링크가 최종 완료되었습니다.") #최종확인

 

Python 파이썬 쿠팡파트너스 API 통해 숏츠 링크를 엑셀 파일 저장

 

이후 마지막으로 크롤링된 상품 정보와 쿠팡 숏츠 링크를 최종 엑셀 파일에 저장합니다. 

 

#엑셀 파일 저장

f =  open('C:/Users/user/raw/coupang/search_results.csv', 'w', encoding='utf-8-sig') #csv파일 데이터 넣을거 생성
f.write("keyword,product_names,product_prices,product_reviews,product_images,coupang_short_urls"+'\n') #컬럼명 입력

#product_names = [] #상품명
#product_prices = [] #가격
#product_reviews = [] #리뷰
#product_links = [] #구매링크
#product_images = [] #상품이미지

#top 10 기준 엑셀파일 저장
#리뷰수는 믿지 말것! (수정해야됨)
 
for i in range(0, 10) :
    name = product_names[i]
    #print(test)
    name = name.replace('\n', '')
    name = name.replace("  ", "")
    name = name.replace(",", "")
    price = product_prices[i]
    price = price.replace(",", "")
    review = product_reviews[i] 
    image = product_images[i]
    short = coupang_short_urls[i]
    #print(test)
    f.write(str(keyword) +','+str(name) + ',' + str(price) + ',' + str(review) + ',' + str(image) + ',' + str(short) +'\n' )
f.close()

 

Python 파이썬 쿠팡 상품 키워드 Top 10 리스트 크롤링, 숏츠 링크 생성 엑셀 파일 저장하기 결과 시연

마지막은 아까 말씀드린 내용을 종합적으로 해서 파이썬으로 돌렸을 시의 결과입니다. 상품 정보를 긁고, 숏츠 링크를 생성하여 최종 엑셀 파일로 결과 파일을 얻을 수 있습니다.

 

Python 파이썬 쿠팡 상품 키워드 Top 10 리스트 크롤링, 숏츠 링크 생성 엑셀 파일 저장하기 결과 시연

 

 

쿠팡파트너스 API를 파이썬을 통해 더 자세한 정보 등을 알고 싶으시다면 언제든지 댓글로 편하게 말씀주세요.  

제가 아는 한도 내의 정보는 전부 공유드릴 수 있도록 해보겠습니다.  이에 여러분들의 쿠팡 파트너스를 통한 금전적인 수익 활동에 소폭 도움이 되시길 바랍니다. 

 

이외 하기로 여러분들의 궁금증이 있으시면 편하게 댓글 주시면 될것 같습니다. 

 

오늘도 봐주셔서 감사합니다. 

 

 

문의 ▶ big203040@naver.com

깃허브 ▶ https://github.com/DBhyeong/digital-marketing/blob/main/%5BPython%5D%20%EC%BF%A0%ED%8C%A1%20%EC%83%81%ED%92%88%20%ED%82%A4%EC%9B%8C%EB%93%9C%20Top%2010%20%EB%A6%AC%EC%8A%A4%ED%8A%B8%20%ED%81%AC%EB%A1%A4%EB%A7%81%2C%20%EC%88%8F%EC%B8%A0%20%EB%A7%81%ED%81%AC%20%EC%83%9D%EC%84%B1%20%EC%97%91%EC%85%80%20%ED%8C%8C%EC%9D%BC%20%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

카톡문의 ▶ https://open.kakao.com/me/hyeonginkorea

 

디지털마케팅코더님의 오픈프로필

안녕하세요, 마케팅 분석을 하여 취미로 코딩하는 디지털마케팅 코더입니다.

open.kakao.com

 

 

반응형

댓글