728x90
무신사 크롤링? 스크래핑!
BeautifulSoup 을 이용하여 무신사 랭킹을 출력해보자!
[문제 요약]
1. 무신사 실시간 랭킹을 1~90위까지 출력해보자
# 순위 : (1) ((2))
# 상품번호 : (3)
# 브랜드명 : (4)
# 상품명 : (5)
# 가격(%) : (6)원 ((7))
# 리뷰 : (8)개
(1)순위 (2)변동 순위 (3)상품번호 (4)브랜드명 (5)상품명 (6)판매가 (7)할인율 (8)리뷰갯수
[풀이 요약]
- HTML, requests, BeautifulSoup, User-Agentf 를 이용하여 웹사이트 내용 출력하기
[코드]
import requests
import math
from bs4 import BeautifulSoup
page = 1
best_ranking = f"https://www.musinsa.com/ranking/best?period=now&age=ALL&mainCategory=&subCategory=&leafCategory=&price=&golf=false&kids=false&newProduct=false&exclusive=false&discount=false&soldOut=false&page={page}&viewType=small&priceMin=&priceMax="
url = best_ranking
headers = # User Agent string 내용 확인하기
res = requests.get(url, headers)
res.raise_for_status()
soup = BeautifulSoup(res.text, 'lxml')
all_rankings = soup.find_all("li", attrs={"class":"li_box"})
for item in all_rankings:
# 상품 번호
product_number = item["data-goods-no"]
# 랭킹 : 순위 (변동 순위)
rank, variation_rank = item.find("p", attrs={"class":"n-label label-default txt_num_rank"}).get_text().split("위")
rank = rank.replace(" ", "")
rank = rank.replace("\n", "")
variation_rank = variation_rank.replace(" ", "")
variation_rank = variation_rank.replace("\n", "")
# 브랜드명
brand_name = item.find("p", attrs={"class":"item_title"}).a.get_text()
# 상품명
product_name = item.find("p", attrs={"class":"list_info"}).a.get_text()
product_name = product_name.replace(" ", "")
product_name = product_name.replace("\n", "")
# 가격 (정상가/할인가)
price = item.find("p", attrs={"class":"price"}).get_text()
price = price.replace(",", "").replace("원", "").split()
if len(price) == 2:
original_price = price[0]
discount_price = price[1]
else:
original_price = price[0]
discount_price = price[0]
# 할인율 구하기
discount_rate = math.floor(round((1-int(discount_price)/int(original_price)) * 100, 0))
# 123456 -> 123,456 변경
discount_price = format(int(discount_price), ",")
# 리뷰 갯수
review_count = item.find("span", attrs={"class":"count"})
if review_count != None:
review_count = int(review_count.get_text().replace(",", ""))
else:
review_count = 0
review_count = format(review_count, ",")
print(f"순위 : {rank} ({variation_rank})\n",
f"상품번호 : {product_number}\n",
f"브랜드명 : {brand_name}\n",
f"상품명 : {product_name}\n",
f"가격(%) : {discount_price}원 ({discount_rate}%)\n",
f"리뷰 : {review_count}개\n")
[출력 내용]
순위 : 1 (-)
상품번호 : 2100462
브랜드명 : 무신사 스탠다드
상품명 : 리버서블쉐르파플리스후디드재킷[아이보리/블랙]
가격(%) : 37,690원 (55%)
리뷰 : 306개
순위 : 2 (-)
상품번호 : 2683886
브랜드명 : 폴로 랄프 로렌
상품명 : 폴로소프트플래드실크블렌드수트재킷-브라운
가격(%) : 899,000원 (0%)
리뷰 : 0개
순위 : 3 (▲10)
상품번호 : 1575612
브랜드명 : 쿠어
상품명 : MTR발마칸코트(블랙)
가격(%) : 296,100원 (10%)
리뷰 : 3,204개
--- 중략 ---
순위 : 88 (▲999)
상품번호 : 665782
브랜드명 : 닥터마틴
상품명 : 2976첼시부츠스무스블랙/11853001
가격(%) : 216,000원 (10%)
리뷰 : 2,946개
순위 : 89 (▲45)
상품번호 : 2702397
브랜드명 : 키뮤어
상품명 : [오정규PICK](솔리드OR멀티트위드선택)_12컬러코튼워셔블하찌벌키크루넥니트
가격(%) : 29,900원 (49%)
리뷰 : 4,441개
순위 : 90 (▼64)
상품번호 : 2827246
브랜드명 : 스노우피크 어패럴
상품명 : 캠픽후드다운자켓_BK
가격(%) : 299,000원 (0%)
리뷰 : 5개
728x90
반응형
'Sparta Coding Club > Today I Learned [TIL]' 카테고리의 다른 글
[TIL] #DAY - 056 - (3) 무신사 크롤링? 스크랩핑!(브랜드별 할인율) (0) | 2022.11.23 |
---|---|
[TIL] #DAY - 055 - (2) 무신사 크롤링? 스크랩핑!(카테고리 정보) (0) | 2022.11.22 |
[TIL] #DAY - 053 - M1 맥북 tensorflow, opencv, dlib 사용하기! (내일배움캠프AI 3기) (0) | 2022.11.17 |
[TIL] #DAY - 052 - (3) 도커 실무 정리 : 배포 서비스 (내일배움캠프AI 3기) (0) | 2022.11.16 |