goodthings4me.tistory.com
쿠팡(Coupang)에서 상품 리스트 크롤링 해보기
쿠팡(Coupang) 검색란에 키워드를 입력(예로, 노트북)하면 많은 상품 리스트가 보인다.
이렇게 검색된 상품 전체를 파이썬 크롤링으로 가져오는 연습을 해보았다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
def coupang_products(keyword, pages):
baseurl = 'https://www.coupang.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
}
products_link = []
for page in range(1, pages + 1):
url =f'https://www.coupang.com/np/search?q={keyword}&channel=user&sorter=scoreDesc&listSize=36&isPriceRange=false&rating=0&page={page}&rocketAll=false'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
products_lis = soup.find('ul', id='productList').find_all('li')
for li in products_lis:
a_link = li.find('a', href=True)['href']
prd_link = baseurl + a_link
prd_name = li.find('div', class_='name').text
try:
base_price = li.find('span', class_='price-info').find('del', class_='base-price').text
except:
base_price = ''
price = li.find('strong', class_='price-value').text
products_info = {
'name': prd_name,
'base_price': base_price,
'price': price,
'product_url': prd_link
}
products_link.append(products_info)
print(len(products_link))
df = pd.DataFrame(products_link)
print(df)
df.to_csv('쿠팡_products_list.csv', index=False, encoding='utf-8-sig')
if __name__ == '__main__':
coupang_products('노트북', 1)
추출 결과
쿠팡의 검색어 입력란의 url은
한 페이지 뿐만 아니라 전체 페이지의 상품 리스트를 가져오려면, 페이지 하단의 페이징 처리 부분에서 최종 페이지 번호를 확인하고, 클릭하여 url을 다시 확인한다. (노트북의 경우 27페이지까지 있음)
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=
위 url 전체를 대상으로 해도 되지만, 값이 있는 부분만을 남기고 키워드 부분과 페이지 번호 부분을 입력받도록 처리하면, 아래와 같다.
url =f'https://www.coupang.com/np/search?q={keyword}1&channel=user&sorter=scoreDesc&listSize=36&isPriceRange=false&rating=0&page={page}&rocketAll=false' 부분이 된다.
함수 coupang_products('노트북', 1)에서 페이지 번호인 1 대신에 27 입력하면 전체 상품 리스트를 Scraping하여 데이터를 추출한다. 이를 pandas를 통해 csv 파일로 저장해보았다.
'노트북' 대신 다른 키워드와 페이지 번호를 입력하면, 해당 키워드 상품에 대한 자료를 받아볼 수 있다.
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
네이버 등 웹 페이지의 쿠키(cookie)를 가져와서 저장하기 (with Python) (0) | 2021.12.25 |
---|---|
파이썬 pytube 오류 메시지 - AttributeError: 'NoneType' object has no attribute 'span' (4) | 2021.12.19 |
파이썬 pip 명령 에러 메시지 - ModuleNotFoundError: No module named 'pip' (0) | 2021.12.12 |
파일명 일괄 변경하기 (with 파이썬) (0) | 2021.12.06 |
파이썬 Tkinter 처음부터 차근차근 따라 하면서 배워보기 (0) | 2021.11.24 |
댓글