상세 컨텐츠

본문 제목

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

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

by 별을 보는 사람 2020. 9. 4. 18:25

본문

반응형

 

제품 링크 - href

 

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

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"}

for i in range(1, 6):
    print("페이지 :", i)
    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={}&rocketAll=false&searchIndexingToken=&backgroundColor=".format(i)
    
    res = requests.get(url, headers = headers)
    res.raise_for_status()
    soup = BeautifulSoup(res.text, "lxml")

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

    for item in items:

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

        name = item.find("div", attrs={"class":"name"}).get_text() # 제품명
        if "Apple" in name:
            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:
            continue

        link = item.find("a", attrs={"class":"search-product-link"})["href"]

        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] # (중괄호 제거)
        else:
            rate_cnt = "평점 수 없음"
            continue

        if float(rate) >= 4.5 and int(rate_cnt) >=100:
            print(f"제품명 : {name}")
            print(f"가격 : {price}")
            print(f"평점 : {rate} ({rate_cnt})")
            print("바로가기 : {}".format("https://www.coupang.com" + link))
            print("-"*100)
반응형

관련글 더보기

댓글 영역