이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

쿠팡 상품 크롤링

  • 2022.09.20 13:29
  • --------------
반응형

 

 

 

쿠팡에 검색어를 입력하고 쿠팡 랭킹순으로 상품을 엑셀에 저장해보자.

 

 

 

import requests
from bs4 import BeautifulSoup
import pyautogui
import openpyxl

keyword = pyautogui.prompt("검색어를 입력하세요.")
num = int(pyautogui.prompt("몇 페이지까지 가져올까요?"))

wb = openpyxl.Workbook('coupang/coupang.result.xlsx')
ws = wb.create_sheet(keyword)
ws.append(['순위', '브랜드명', '상품명', '가격', '상세페이지 링크'])

rank = 1

for page in range(1, num + 1):
    # 검색어 
    print(page, "번째 페이지 입니다.")
    main_url = f"https://www.coupang.com/np/search?&q={keyword}&page={page}"

    # 헤더에 User-Agent, Accept-Language 추가해주기.
    header = {
        'Host': 'www.coupang.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3',
    }

    response = requests.get(main_url, headers=header)
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')

    links = soup.select("a.search-product-link") # 여러개라서 리스트로 반환

    for link in links:

        # 광고 상품 제거
        if len(link.select("span.ad-badge-text")) > 0:
            print("광고 상품 입니다.")
        else:
            sub_url = "https://www.coupang.com/" + link.attrs['href'] # 형식 맞추기 

            response = requests.get(sub_url, headers=header)
            html = response.text
            soup = BeautifulSoup(html, 'html.parser')
            
            try:
                brand_name = soup.select_one("a.prod-brand-name").text # 상품명은 없을 수도 있다.
            except:
                brand_name = ""
            
            # 상품명
            product_name = soup.select_one("h2.prod-buy-header__title").text

            # 가격
            product_price = soup.select_one("span.total-price > strong").text

            print(rank, brand_name, product_name, product_price)
            ws.append([rank, brand_name, product_name, product_price, sub_url])
            rank += 1

wb.save('coupang_result.xlsx')

 

 

 

네이버 뉴스를 크롤링 할 때와 유사한 방법으로 해결할 수 있다.

 

헤더에 User-Agent와 Accept-Language를 추가해 크롤링이 멈추는 현상을 방지한다.

광고 상품은 따로 처리해줬고, 상세 정보 페이지에 요소가 없는 경우가 생길 수 있어 이 경우도 처리해줬다.

 

입력받은 검색어로 검색을 시도하는데, 이 때 URL은 필요한 쿼리만 작성해주면 된다.

 

나머지는 네이버 뉴스 크롤링과 똑같다.

 

기본적인 로직은 같으니, 웹 사이트의 구조만 제대로 파악하면 어려움 없이 진행할 수 있다.

 

반응형
저작자표시 (새창열림)

'--------------' 카테고리의 다른 글

[CSS] CSS 정리 (5)  (0) 2022.09.21
이미지 크롤링  (2) 2022.09.21
네이버 뉴스 크롤링  (0) 2022.09.18
[HTML] HTML 정리 (3)  (1) 2022.09.14
시간의화살 블로그 소개  (0) 2022.08.30

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [CSS] CSS 정리 (5)

    [CSS] CSS 정리 (5)

    2022.09.21
  • 이미지 크롤링

    이미지 크롤링

    2022.09.21
  • 네이버 뉴스 크롤링

    네이버 뉴스 크롤링

    2022.09.18
  • [HTML] HTML 정리 (3)

    [HTML] HTML 정리 (3)

    2022.09.14
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (683)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (143)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Data Science (1)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (12)
    • 💬 기록 (8)
    • 📚 공부 (7)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바