쫑가 과정

3주차 - 쿠팡 정보를 엑셀로 만들기 본문

프로그래밍 공부/파이선_정보취합하기

3주차 - 쿠팡 정보를 엑셀로 만들기

쫑가 2021. 5. 20. 01:30

2021.05.13 - [초심자의 기억/파이선_정보취합하기] - 2주차 연습 - 쿠팡 웹스크래핑

 

2주차 연습 - 쿠팡 웹스크래핑

저번에 했던 분석을 토대로 실전을 해보자! 1. 쿠팡 기본적인 시작을 써준다. 웹페이지에 들어갈 url을 찾아오자 나는 고양이를 검색해서 나온 리스트를 가지고 오고 싶다! import requests from bs4 impor

jjong-ga.tistory.com

지난 번에 만든 쿠팡 수집을 엑셀로 옮겨보자!

 

필요한 것

pandas module

이유

Pandas의 DataFrame : 열과 행으로 구성된 엑셀 표와 같은 구조를 가진다.

pandas?

https://www.cbtnuggets.com/blog/certifications/microsoft/why-pandas-is-a-better-data-analysis-tool-than-excel

 

Why Pandas is a Better Data Analysis Tool Than Excel

Many data analysts are switching to using pandas instead of Microsoft Excel. Although Excel is getting better with each new version, pandas has some unique benefits that may help you speed up your data analysis and calculations.  Continue Reading

www.cbtnuggets.com

 

위 링크에서 가져 온 바로는

2008년에 출시된 pandas는 Python의 소프트웨어 라이브러리 확장 중 하나

Python에 저장된 데이터와 함께 작동하여 데이터를 다루고 분석한다.

Excel과는 반대로, Python은 다운로드와 이용이 완전 무료.

pandas 라이브러리는 data과학자와 분석가들이 매우 크고 매우 작은 범위까지 다양한 작업을 하기 위해 사용된다.

 

pandas가 수행할 수 있는 것:

  • BeautifulSoup과 결합하여 스크래퍼의 텍스트를 데이터베이스로 넘긴다.
  • 데이터를 빠르게 정리하고 파일 형식을 변환한다.
  • 대규모 데이터 세트 처리한다.
  • Matplotlib로 데이터 시각화한다.

신속하게 결과를 얻어야하는 모든 사람을 위한 엄청 좋은 라이브러리.

프로그램에 대한 학습은 Excel보다 어렵고 Python 및 코딩에 대한 기본 지식이 필요하다.

 

읽어보면 엑셀과 비교해 장점이 많다. 요약하자면

  • 수백만 개의 데이터 포인트를 원활하게 처리(속도)
  • DataFrame (데이터 세트의 해당 버전)에 포함 할 수있는 데이터 포인트의 수에 제한없음(용량)
  • 데이터에 대해 복잡한 방정식과 계산을 만들고 사용하는 것도 더 쉬움(계산)
  • 15 가지 이상의 다른 형식을 처리하고 쉽게 전환(파일변환)
  • 쉽게 데이터를 정리할 수 있으며 데이터 허점 복구 및 중복 제거를 포함한 많은 프로세스를 자동화(데이터정리)
  • 트렌드와 패턴을보기 위해 데이터를 시각화하는 데에도 매우 효과적(시각화)
  • 그래프는 더욱 사용자 정의가 가능하며 원하는 개념을 거의 만들 수 있음(사용자정의)

The best course of action is actually to use Microsoft Excel and Python pandas together.

Python pandas와 Excel을 함께 사용하는게 제일 좋다고 한다!

 

pandas는 기본으로 제공해주지 않기에 설치해야한다.

pip3 install pandas

설치되었나 확인

pip list

pandas를 어떻게 사용할 것인가 보자

사용법

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_excel.html

 

pandas.DataFrame.to_excel — pandas 1.2.4 documentation

Extra options that make sense for a particular storage connection, e.g. host, port, username, password, etc., if using a URL that will be parsed by fsspec, e.g., starting “s3://”, “gcs://”. An error will be raised if providing this argument with a

pandas.pydata.org

ex)

import pandas as pd

df1 = pd.DataFrame([['a', 'b'], ['c', 'd']],
                   index=['row 1', 'row 2'],
                   columns=['col 1', 'col 2'])
df1.to_excel("output.xlsx")
  col 1 col2
row 1 a b
row 2 c d

여러 기능이 있지만 예제정도면 뽑아낼 수 있으니 이정도만 사용해보자.

 

import requests
import pandas as pd
from bs4 import BeautifulSoup

results = []

for index in range(3):
    page = index+1
    params = {
        "component" :"",
        "q":"고양이",
        "channel": "user",
        "page": page             
    }
    header = ["제품명", "가격", "할인율", "링크", "평점"]

    headers = {
        'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36"
    }
    webpage = requests.get("https://www.coupang.com/np/search", headers=headers, params=params)
    soup = BeautifulSoup(webpage.content, "html.parser")

    getItem = soup.select("ul#productList li")

    base_url = 'http://coupang.com'

    for item in getItem:
        row = []
        item_name = item.select_one('div.name').text.strip()
        item_price = item.select_one(
            'strong.price-value').text.strip().replace(',', '')
        item_link = base_url + item.select_one('a').get('href')
        
        check_item_discount_rate = item.select_one('span.instant-discount-rate')
        item.discount_rate = '할인 안함'
        if check_item_discount_rate:
            item_discount_rate = check_item_discount_rate.text.strip()

        check_item_point = item.select_one('em.rating')
        item.point = '없음'
        if check_item_point:
            item_point = item.select_one('em.rating').text.strip()

        row.append(item_name)
        row.append(item_price + '원')
        row.append(item_discount_rate)
        row.append(item_link)
        row.append(item_point + '점')
        results.append(row)

results_df = pd.DataFrame(data=results, columns=header)

results_df.to_excel('coupan_pandas.xlsx')

 

참고한 사이트

 

 

Comments