본문 바로가기
Python

[python] 스마트스토어 해시태그 키워드 추출 수정 버전(2022.08.25 기준)

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

python 스마트스토어 해시태그 키워드 추출 수정 버전

예전에 어떤 분이 요청을 주셨는데 스마트스토어에서 태그 키워드 추출이 안 된다고 해서 수정 버전을 가져왔습니다. 대략적으로 내용은 이렇게 나오기 때문에 이전 버전에 더 자세한 정보가 나와 있기 때문에 그것을 참고해 보세요. 해시태그를 가져올 건데요, 제품 상세페이지 안에서요.

 

여기에 한 가지 단점이 있습니다. 브랜드 카탈로그에 묶여 있던 상품명은 크롤링이 불가합니다. 가져오지 못하고 쇼핑몰 등급 중에 파워,빅파워, 프리미엄 여기 있는 등급의 상세 페이지에 태그를 추출하는데요. 태그를 추출하는데 메타 태그 안에서 키워드 부분이 있습니다. 키워드 부분이 스마트스토어의 상세 페이지 태그로 키워드가 됩니다. 

 

적어도 빅파워라든지 프리미엄 정도의 쇼핑몰 수준의 쇼핑몰은 과연 어떤 해시태그를 사용하는지 메타키워드를 사용하는지 그것을 보는 것이라고 보시면 됩니다. 이전과 내용은 같고 검색 결과 내에서 상위 Top 5 기준입니다. 상위 5개만 가져오고 그 중에 아까 말씀드린 것처럼 등급에 해당하는 것만 태그로 가져올 테니까요.

 

그걸 참고하시면 참고하시고 이 코딩을 한 번 돌려보세요. 아주 간단합니다. 이 키워드에 맞는 이 부분에서 좋아하는 키워드를 넣어보면 바로 그게 나오니까 그것만 참고해서 확인해 주세요.

 

import requests
from bs4 import BeautifulSoup
import time
import random
import time
import re

keyword= '지플립4케이스'

url = 'https://search.shopping.naver.com/search/all?query={}&frm=NVSHATC'.format(keyword)
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'
}

response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
lis = soup.find('ul', class_='list_basis').find_all('li')


try :
    div_title_class_name = re.search('<div class="basicList_title__(.+?)">', str(lis)).group()  #상품명
    div_title__class_name_2 = re.search('"(.+?)"', str(div_title_class_name)).group()
    div_title__class_name_2 = div_title__class_name_2.replace('"', '')

    span_grade_class_name = re.search('<span class="basicList_grade__(.+?)">', str(lis)).group() #쇼핑몰 등급
    span_grade_class_name_2 = re.search('"(.+?)"', str(span_grade_class_name)).group()  
    span_grade_class_name_2 = span_grade_class_name_2.replace('"', '')
except :
    print("브랜드 카탈로그만 있습니다.")

#print(span_grade_class_name_2) #완료

nshop_cnt = 1

for li in lis :
    try :
        div_title = li.find('div', {"class" : str(div_title__class_name_2)})  #상품명
        title = div_title.text.strip()
        #print(title.text.strip())
        print(f'\nshop_cnt: {nshop_cnt}\n상품 제목:{title}')
        nshop_cnt += 1
        # 쇼핑몰 등급 (파워, 빅파워, 프리미엄)
        div_grade = li.find('span', {"class" : str(span_grade_class_name_2)}).text
        #print(div_grade)
        ## 상세페이지 태그 추출
        if div_grade in ('파워', '빅파워', '프리미엄'):
            a_tag = div_title.find('a') # 상품 상세페이지 링크
            #print(a_tag)
            response = requests.get(a_tag['href'])
            time.sleep(random.uniform(0.2, 0.7))
            # 태그 추출 위해 <meta> 태그 스크래핑 
            soup = BeautifulSoup(response.text, 'html.parser')
            metas = soup.find('meta', {'name':'keywords'}).get('content').split('/')[0].split(',')[:-1]
            print(f'상세페이지 태그:\n{metas}')
            time.sleep(3)
            
    except :
        pass

 

*깃허브 URL 참고

https://github.com/DBhyeong/digital-marketing/blob/main/%EC%8A%A4%EB%A7%88%ED%8A%B8%EC%8A%A4%ED%86%A0%EC%96%B4%20%ED%83%9C%EA%B7%B8%ED%82%A4%EC%9B%8C%EB%93%9C%20%ED%82%A4%EC%9B%8C%EB%93%9C%20%EC%B6%94%EC%B6%9C%20%ED%81%AC%EB%A1%A4%EB%A7%81_20220825.ipynb

반응형

댓글