상세 컨텐츠

본문 제목

[파이썬 웹 스크래핑] Beautifulsoup4 (쿠팡 노트북) - 5

프로그래밍 언어/웹 스크래핑

by 별을 보는 사람 2020. 9. 3. 17:47

본문

반응형

 

제품 이름

name = item.find("div", attrs={"class":"name"}).get_text() # 제품명

 

 

가격

price = item.find("strong", attrs={"class":"price-value"}).get_text() # 가격

 

평점

rate = item.find("em", attrs={"class":"rating"}) # 평점 

 

평점 수

rate_cnt = item.find("span", attrs={"class":"rating-total-count"}) #평점 수

 

광고 상품

ad_badge = item.find("span", attrs={"class":"ad-badge-text"}) # 광고 상품

 

전체 코드

import requests
import re # 정규식 관련 패키지
from bs4 import BeautifulSoup

url = "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="
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"}
res = requests.get(url, headers = headers)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")

# print(res.text)

# li element 중에서 class가 search-product로 시작하는 모든 li element를 가져온다.
items = soup.find_all("li", attrs={"class":re.compile("^search-product")})
# print(items[0].find("div", attrs={"class":"name"}).get_text())

for item in items:

    # 광고 제품은 제외
    ad_badge = item.find("span", attrs={"class":"ad-badge-text"})
    if ad_badge:
        # print("---<광고 상품 제외합니다>---")
        continue

    name = item.find("div", attrs={"class":"name"}).get_text() # 제품명
    if "레노버" in name:
        print("---<레노버 제품은 제외합니다>---")
        continue

    price = item.find("strong", attrs={"class":"price-value"}).get_text() # 가격
    
    # 리뷰 100개 이상, 평점 4.5 이상 되는 것만 조회
    rate = item.find("em", attrs={"class":"rating"}) # 평점 
    if rate:
        rate = rate.get_text()
    else:
        # print("--- <평점 없는 상품은 제외합니다> ---")
        continue


    rate_cnt = item.find("span", attrs={"class":"rating-total-count"}) #평점 수
    if rate_cnt:
        rate_cnt = rate_cnt.get_text() # 예 : (26)
        rate_cnt = rate_cnt[1:-1] # (중괄호 제거)
        # print("리뷰 수", rate_cnt)
    else:
        rate_cnt = "평점 수 없음"
        # print("---<평점 수 없는 제품은 제외합니다>---")
        continue

    if float(rate) >= 4.5 and int(rate_cnt) >=50:
        print(name, price, rate, rate_cnt)

    # 제품명  : 삼성전자 갤럭시북 이온 노트북 NT930XCJ-K716A 아우라 실버 (i7-10510U 33.7cm), NVMe 512GB, 16GB, WIN10 Home 
    # 가격    : 1,855,610 
    # 평점    : 4.0 
    # 평점 수 : (18)

 

 

반응형

관련글 더보기

댓글 영역