< 파이썬 크롤링 - 쿠팡 상품/가격/별점/링크까지 엑셀에 저장 >

bsj_world·2022년 7월 10일
0

크롤링

목록 보기
3/3
post-thumbnail

"상품의 데이터를 엑셀에 저장할 수 있다면 업무의 능률을 한껏 올릴 것이다. 우리는 이 과정을 파이썬 코드를 통해 쉽게 이뤄낼 수 있다."

import requests, openpyxl
from bs4 import BeautifulSoup
import re
excel_file = openpyxl.Workbook()
excel_sheet = excel_file.active
excel_sheet.append(['랭킹', '상품명', '판매가격', '상품상세링크'])

url = "https://www.coupang.com/np/search?component=&q=%EC%8B%A0%EC%9D%BC+%EC%84%9C%ED%81%98%EB%A0%88%EC%9D%B4%ED%84%B0&channel=user"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36"}
res = requests.get(url, headers = headers, verify=False)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")

items = soup.find_all("li", attrs={"class":re.compile("^search-product")})

item_list = []
for index, item in items:
    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"})
    if rate:
            rate = rate.get_text()
    else:
        continue
        
    review = item.find("span", attrs={"class":"rating-total-count"})
    if review:
            review = review.get_text()
            review = review[1:-1]
    else:
        continue

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

    print(f"제품명 : {name}")
    print(f"가격 : {price}")
    print(f"평점 : {rate}점 ({review}개)")
    print("바로가기 : {}".format("https://www.coupang.com"+link))
    print("-"*30)
    excel_sheet.append([index+1, name, price, rate, "https://www.coupang.com"+link])
excel_file.save('PRODUCT_LIST.xlsx')
excel_file.close()
  • headers에 넣은 것들은 뭐야?
    쿠팡 사이트에서 데이터 과부화를 막기 위해 크롤링을 막아두었다. user-agent를 입력하면 이 문제가 해결되는데 구글에 What is my User Agent라고 검색하면 자신의 컴퓨터에 맞는 String을 얻을 수 있다.

+verify=False: 해당 옵션을 사용하면 HTTPS 요청에 대한 SSL 인증서 확인 과정을 생략하겠다는 의미.

  • 그러면 내가 원하는 기준들을 적용하고 싶으면 어떻게 하면 돼?
    만약 별점이 4.5등급 이상이고 리뷰가 100개 이상인 상품들만 분류하고 싶다면
if float(rate) >= 4.5 and int(review) >= 100 :

이런 형태로 코드를 추가해서 작성하면 된다.

profile
일상과 함께 자연히 스며드는 사이트를 만들고자 합니다.

0개의 댓글