API 로 데이터 수집 2

2026. 4. 22. 14:43·🤖​AI Tools/AI 리뷰 분석

API 로 데이터 수집 2

1. Steamreviews 설치

!pip install steamreviews -q

import steamreviews
print("steamreviews 설치 완료!")

2. 리뷰 수집하기

app_id = '2072450'

# 리뷰 수집 ( 시간이 좀 걸릴 수 있음 )
# query_count=1로 설정하여 API 호출 횟수를 1회로 제한, 약 100개의 리뷰 수집
review_dict, query_count = steamreviews.download_reviews_for_app_id(
    app_id,
    chosen_request_params={'language': 'korean'},
    query_count=1 # API 호출 횟수를 1회로 제한
)

# 수집된 리뷰가 100개가 넘을 경우, 처음 100개만 사용하도록 제한 (query_count=1 일 경우 불필요할 수 있으나 안전장치)
if len(review_dict['reviews']) > 100:
    limited_reviews = {}
    for i, (review_id, review_data) in enumerate(review_dict['reviews'].items()):
        if i >= 100:
            break
        limited_reviews[review_id] = review_data
    review_dict['reviews'] = limited_reviews

print(f"수집된 리뷰 수: {len(review_dict['reviews'])}")
print(f"API 요청 횟수: {query_count}")
[appID = 2072450] expected #reviews = 1702
수집된 리뷰 수: 100
API 요청 횟수: 19

3. 데이터 구조 살펴보기

# 첫 번째 리뷰 하나만 확인
first_review_id = list(review_dict['reviews'].keys())[0]
first_review = review_dict['reviews'][first_review_id]

print("리뷰 데이터에 포함된 키(필드):")
print(list(first_review.keys()))
리뷰 데이터에 포함된 키(필드):
['recommendationid', 'author', 'language', 'review', 'timestamp_created', 'timestamp_updated', 'voted_up', 'votes_up', 'votes_funny', 'weighted_vote_score', 'comment_count', 'steam_purchase', 'received_for_free', 'written_during_early_access', 'primarily_steam_deck']

import pandas as pd

# 첫 번째 리뷰 내용 확인
print("=" * 50)
print("첫 번째 리뷰 샘플")
print("=" * 50)
print(f"리뷰 ID: {first_review_id}")
print(f"추천 여부: {'추천' if first_review['voted_up'] else '비추천'}")
print(f"플레이 시간: {first_review['author']['playtime_forever'] / 60:.1f}시간")
print(f"\n리뷰 내용:\n{first_review['review'][:300]}...")
==================================================
첫 번째 리뷰 샘플
==================================================

---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

/tmp/ipykernel_3610/3500839989.py in <cell line: 0>()
      5 print("첫 번째 리뷰 샘플")
      6 print("=" * 50)
----> 7 print(f"리뷰 ID: {first_review_id}")
      8 print(f"추천 여부: {'추천' if first_review['voted_up'] else '비추천'}")
      9 print(f"플레이 시간: {first_review['author']['playtime_forever'] / 60:.1f}시간")

NameError: name 'first_review_id' is not defined

4. DataFrame 으로 변환

import pandas as pd

# 리뷰 데이터를 리스트로 변환
reviews_list = []
for review_id, review_data in review_dict['reviews'].items():
    reviews_list.append({
        'review_id': review_id,
        'review': review_data['review'],
        'voted_up': review_data['voted_up'],
        'playtime_hours': review_data['author']['playtime_forever'] / 60,  # 분→시간
        'timestamp': review_data['timestamp_created']
    })

# DataFrame 생성
df = pd.DataFrame(reviews_list)

print(f"DataFrame 크기: {df.shape[0]}행 x {df.shape[1]}열")
print("\n처음 5개 행:")
df.head()
DataFrame 크기: 100행 x 5열

처음 5개 행:
review_id review voted_up playtime_hours timestamp01234
223505597 항상 좋은 키류~ True 34.466667 1776490181
223376670 왠만하면 아니요 잘 안누르는데\r\n7과 비교해서 너무 실망이다.\r\n개연성 부족... False 65.616667 1776351246
223360010 일본 RPG는 끊임없이 진화합니다. 이 게임은 그 증명입니다. True 67.583333 1776329476
223267485 용과같이8에는 리스펙이 존재한다. True 82.783333 1776198907
223182042 우선 7,8편이 1~2부 나눈것처럼 스토리가 이어지므로 가능하면 7편부터 하고 8편... True 72.150000 1776091471

5. 수집 데이터 탐색

# 기본 정보
print("=" * 50)
print("수집 데이터 요약")
print("=" * 50)
print(f"총 리뷰 수: {len(df)}개")
print(f"추천 비율: {df['voted_up'].mean() * 100:.1f}%")
print(f"평균 플레이 시간: {df['playtime_hours'].mean():.1f}시간")
print(f"최대 플레이 시간: {df['playtime_hours'].max():.1f}시간")
==================================================
수집 데이터 요약
==================================================
총 리뷰 수: 100개
추천 비율: 84.0%
평균 플레이 시간: 94.0시간
최대 플레이 시간: 406.7시간

# 리뷰 샘플 확인
print("\n--- 리뷰 샘플 (처음 3개) ---")
for i in range(min(3, len(df))):
    print(f"\n[{i+1}] {'추천' if df.iloc[i]['voted_up'] else '비추천'} | {df.iloc[i]['playtime_hours']:.1f}시간")
    print(df.iloc[i]['review'][:150] + "...")
--- 리뷰 샘플 (처음 3개) ---

[1] 추천 | 34.5시간
항상 좋은 키류~...

[2] 비추천 | 65.6시간
왠만하면 아니요 잘 안누르는데
7과 비교해서 너무 실망이다.
개연성 부족, 억지로 끼워 맞춘 스토리, 전투도 너무 늘어진다.
그냥 팬심으로 했지.. 겜으로 따지면... 처참하다......

[3] 추천 | 67.6시간
일본 RPG는 끊임없이 진화합니다. 이 게임은 그 증명입니다....

6. CSV 로 저장

# CSV 파일로 저장
filename = f"reviews_{app_id}.csv"
df.to_csv(filename, index=False, encoding='utf-8-sig')

print(f"'{filename}' 저장 완료!")
print(f"파일 크기: {len(df)}행 x {len(df.columns)}열")
'reviews_2072450.csv' 저장 완료!
파일 크기: 100행 x 5열

7. 파일 다운로드

# ( Colab 전용 ) 파일 다운로드
try:
    from google.colab import files
    files.download(filename)
    print("다운로드 시작")
except:
    print("로컬 환경에서 실행 중 - 파일이 현재 디렉토리에 저장")

'🤖​AI Tools > AI 리뷰 분석' 카테고리의 다른 글

Hades 리뷰 분석  (0) 2026.04.22
API 로 데이터 수집하기  (0) 2026.04.22
데이터 수집 방법  (0) 2026.04.21
Python 정리  (0) 2026.04.21
텍스트 리뷰 분석  (0) 2026.04.14
'🤖​AI Tools/AI 리뷰 분석' 카테고리의 다른 글
  • Hades 리뷰 분석
  • API 로 데이터 수집하기
  • 데이터 수집 방법
  • Python 정리
DevHoChan
DevHoChan
맨땅에서 시작하는 코딩 도전
  • DevHoChan
    Debugging Life
    DevHoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (374)
      • 🕹️Game Life (1)
      • 🖥️Computer Science (5)
      • 📖TIL (141)
        • 🔥Projects (16)
        • 💡DevTips (5)
        • 🤔발생한 문제와 해결 (5)
        • 🔮Unity Graphics (5)
        • 🎤Interview (3)
        • ✅CodingTest (9)
      • 🚀Game Release (4)
      • 🧊Unity Basic (58)
        • 📌용어 사전 (1)
        • 에디터&인터페이스 (3)
        • 디버그 (1)
        • 라이프사이클 (4)
        • 게임오브젝트 (4)
        • 프리팹 (1)
        • 오브젝트풀링 (4)
        • 애트리뷰트 (2)
        • 트랜스폼 (4)
        • 물리&충돌 (1)
        • 프레임&델타타임 (4)
        • 코루틴&이벤트 (7)
        • 수학&보정함수 (3)
        • 디자인패턴 (9)
        • UGUI (3)
        • 벡터 ( Vector ) (3)
        • 씬 ( Scene ) (2)
        • 데이터 관리 (2)
      • ⭐C Sharp (99)
        • 📌용어 사전 (1)
        • 📌문법 사전 (6)
        • 메모리 관리 (3)
        • 00. 문법 (17)
        • 01. 변수 (3)
        • 02. 자료형 (2)
        • 03. 연산자 (6)
        • 04. 조건문 (2)
        • 05. 반복문 (2)
        • 06. 배열 (3)
        • 07. 메서드(함수) (7)
        • 08. 열거형 (3)
        • 09. 구조체 (2)
        • 10. 참조 (2)
        • 11. 객체 지향 (11)
        • 12. 델리게이트 (3)
        • 13. 디자인 패턴 (7)
        • 14. LINQ (1)
        • 📂▼자료구조 (2)
        • 15-1. 제네릭 (3)
        • 15-2. 배열 (4)
        • 15-3. 리스트 (2)
        • 15-4. 스택과 큐 (2)
        • 15-5. 딕셔너리 해시테이블 (2)
        • 15-6. 트리와 그래프 (3)
      • 📊Algorithm (16)
        • BigO (2)
        • 정렬 (4)
        • 셔플 (2)
        • 탐색 (6)
        • 최적화 (1)
      • 📝Game Design (16)
      • 🤖​AI Tools (12)
        • AI 리뷰 분석 (6)
        • Player2 (0)
        • 3D 모델링 (1)
        • 2D 스프라이트 (0)
        • 이미지 (2)
        • 사운드 (1)
        • 동영상 (1)
        • 문서 (1)
      • 🌍Network (6)
      • 🌱Github (11)
        • 기본 개념 (7)
        • 명령어 (1)
        • 도구 활용 (1)
      • ⚙️Visual Studio (5)
        • 🔧설치 및 환경설정 (2)
        • ⌨️HotKey (1)
        • 🚨디버깅 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CodingTest
    객체지향
    자료구조
    OOP
    메모리관리
    unity
    부트캠프
    c#
    GitHub
    문법
    gamedesign
    csharp
    디자인패턴
    til
    자료형
    유니티
    algorithm
    기획
    게임디자인
    게임기획
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
DevHoChan
API 로 데이터 수집 2
상단으로

티스토리툴바