유튜브 채널 분석 자동화! 파이썬으로 영상 정보 자동 수집하기

이미지
유튜브 채널 분석 자동화! 파이썬으로 영상 정보 자동 수집하기 (완성 코드 공개) "경쟁 채널의 인기 영상 제목과 조회수를 주기적으로 모니터링하고 싶다", "우리 채널 영상 목록을 엑셀로 정리해서 콘텐츠 현황을 파악하고 싶다", "특정 키워드로 검색되는 영상들의 조회수 추이를 추적하고 싶다"… 유튜브 스튜디오에서 데이터를 확인할 수 있지만 경쟁 채널을 비교하거나 이력을 누적 저장하기는 어렵습니다. 구글에서 제공하는 유튜브 데이터 API v3를 활용하면 파이썬으로 채널 정보, 영상 목록, 조회수, 좋아요 수, 댓글 수를 자동으로 수집할 수 있습니다. 하루 10,000 유닛까지 무료로 사용할 수 있습니다. 1단계: 유튜브 API 키 발급 (최초 1회만) 구글 클라우드 콘솔에서 API 키를 발급받아야 합니다. 아래 순서대로 진행하세요. console.cloud.google.com 에 접속해 구글 계정으로 로그인합니다. 상단 "프로젝트 선택" → "새 프로젝트" → 프로젝트 이름 입력 후 만들기 왼쪽 메뉴 "API 및 서비스" → "라이브러리" 클릭 검색창에 "YouTube Data API v3" 검색 → 클릭 → "사용 설정" 왼쪽 메뉴 "사용자 인증 정보" → "사용자 인증 정보 만들기" → "API 키" 선택 생성된 API 키를 복사해 둡니다. ⚠️ API 사용량 주의: 유튜브 API는 하루 10,000 유닛 무료 한도가 있습니다. 영상 목록 조회는 100 유닛, 영상 상세 정보는 1 유닛 소비합니다. 대량 수집 시 한도를 초과할 수 있으니 주의하세요. 2단계: 준비물 설치 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요: pip insta...

인터넷 느리다고 느낄 때! 파이썬으로 속도 자동 측정하고 기록하기

인터넷 느리다고 느낄 때! 파이썬으로 속도 자동 측정하고 기록하기 (완성 코드 공개)

파이썬으로 인터넷 속도를 자동으로 측정하고 기록하는 모습


"재택근무 중 오전 10시만 되면 화상회의가 끊긴다", "점심시간 이후에 유독 인터넷이 느린 것 같다", "인터넷 서비스 업체에 느리다고 항의하려는데 근거 자료가 없다"…

인터넷이 느리다는 느낌은 있지만 언제, 얼마나 느린지 정확한 데이터가 없으면 원인을 파악하기 어렵습니다. 파이썬을 한 번만 세팅해두면 다운로드·업로드·핑(Ping) 속도를 자동으로 측정해 날짜·시간과 함께 엑셀에 누적 저장합니다. 작업 스케줄러와 결합하면 하루 종일 자동으로 측정해 느린 시간대를 정확히 파악할 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

인터넷 속도 측정에 필요한 라이브러리를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install speedtest-cli pandas openpyxl

speedtest-cli는 Speedtest.net의 공식 서버를 활용해 인터넷 속도를 측정하는 라이브러리입니다. 별도 회원가입이나 API 키 없이 바로 사용할 수 있습니다. pandasopenpyxl은 측정 결과를 엑셀에 누적 저장하는 데 사용합니다.

💡 이 코드로 측정하는 항목: 다운로드 속도(Mbps), 업로드 속도(Mbps), 핑(ms), 측정에 사용된 서버 위치, 측정 일시를 자동으로 수집해 엑셀에 누적 저장합니다.

2단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, speed_test.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import speedtest
import pandas as pd
from pathlib import Path
from datetime import datetime

# ① 설정
OUTPUT_PATH    = r"C:\Users\내이름\Desktop\인터넷속도_이력.xlsx"  # ← 저장 경로
ALERT_DOWNLOAD = 50    # ← 다운로드 속도 경고 기준 (Mbps, 이 값 이하면 경고)
ALERT_PING     = 100   # ← 핑 경고 기준 (ms, 이 값 이상이면 경고)

# ② 속도 측정
print("  📡 인터넷 속도 측정 중... (30초~1분 소요)")
st = speedtest.Speedtest()
st.get_best_server()   # 가장 가까운 서버 자동 선택

download = round(st.download() / 1_000_000, 2)   # bps → Mbps 변환
upload   = round(st.upload()   / 1_000_000, 2)
ping     = round(st.results.ping, 2)
server   = st.results.server.get("name", "알 수 없음")
isp      = st.results.client.get("isp", "알 수 없음")
now      = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

print(f"  ✔ 다운로드: {download} Mbps")
print(f"  ✔ 업로드:   {upload} Mbps")
print(f"  ✔ 핑:       {ping} ms")
print(f"  ✔ 서버:     {server} / ISP: {isp}")

# ③ 경고 판단
warnings = []
if download < ALERT_DOWNLOAD:
    warnings.append(f"다운로드 속도 느림 ({download} Mbps)")
if ping > ALERT_PING:
    warnings.append(f"핑 높음 ({ping} ms)")
warning_msg = " / ".join(warnings) if warnings else "정상"

# ④ 결과 정리
result = {
    "측정일시":         now,
    "다운로드(Mbps)":   download,
    "업로드(Mbps)":     upload,
    "핑(ms)":          ping,
    "서버":             server,
    "ISP":             isp,
    "상태":             warning_msg,
}

# ⑤ 엑셀에 누적 저장
output = Path(OUTPUT_PATH)
df_new = pd.DataFrame([result])

if output.exists():
    df_old = pd.read_excel(output, engine="openpyxl")
    df_all = pd.concat([df_old, df_new], ignore_index=True)
else:
    df_all = df_new

df_all.to_excel(output, index=False)

if warnings:
    print(f"\n  ⚠ 경고: {warning_msg}")
else:
    print(f"\n  ✅ 속도 정상")

print(f"\n✅ 완료! 누적 {len(df_all)}회 기록 → {OUTPUT_PATH}")

3단계: 실행 방법

  1. 코드 ① 설정의 OUTPUT_PATH에 측정 기록을 저장할 엑셀 파일 경로를 입력합니다.
  2. ALERT_DOWNLOAD에 경고 기준 다운로드 속도를, ALERT_PING에 경고 기준 핑 값을 입력합니다.
  3. 터미널에서 아래 명령어로 실행합니다:
python speed_test.py

측정에는 30초~1분 정도 소요됩니다. 정상 실행 시 터미널에 이렇게 출력됩니다:

  📡 인터넷 속도 측정 중... (30초~1분 소요)
  ✔ 다운로드: 487.32 Mbps
  ✔ 업로드:   98.54 Mbps
  ✔ 핑:       12.48 ms
  ✔ 서버:     Seoul / ISP: KT

  ✅ 속도 정상

✅ 완료! 누적 1회 기록 → C:\Users\내이름\Desktop\인터넷속도_이력.xlsx

엑셀 파일을 열면 측정일시, 다운로드·업로드·핑 속도, 서버, ISP, 상태가 열별로 정리됩니다. 실행할 때마다 새 행이 추가되어 이력이 자동으로 누적됩니다.


4단계: 자주 발생하는 오류와 해결법

오류 1: speedtest.ConfigFetchError

인터넷 연결이 불안정하거나 Speedtest 서버에 일시적으로 접근이 안 될 때 발생합니다. 잠시 후 다시 시도하거나, 아래처럼 예외 처리를 추가해 오류 발생 시 자동으로 재시도하도록 할 수 있습니다:

import time
for attempt in range(3):   # 최대 3회 재시도
    try:
        st = speedtest.Speedtest()
        break
    except Exception:
        print(f"  재시도 중... ({attempt+1}/3)")
        time.sleep(10)

오류 2: 측정값이 실제보다 현저히 낮게 나옴

VPN이 켜져 있거나 동시에 대용량 다운로드가 진행 중이면 측정값이 낮게 나옵니다. 측정 전 VPN을 끄고 다른 네트워크 사용을 최소화한 상태에서 실행하세요.

오류 3: ModuleNotFoundError: No module named 'speedtest'

라이브러리 이름이 speedtest가 아닌 speedtest-cli입니다. 설치 명령어를 다시 확인하세요:

python -m pip install speedtest-cli

응용: 30분마다 자동 측정해서 하루 이력 수집하기

윈도우 작업 스케줄러를 활용해 30분마다 자동 측정하면 하루 종일 속도 변화를 기록할 수 있습니다. 작업 스케줄러 설정 방법은 이전 게시글 주식·환율 자동 수집 편을 참고하세요.

또는 코드 안에 반복 실행 루프를 추가할 수도 있습니다. 코드 ② 속도 측정 앞에 아래 루프를 추가하면 30분마다 자동으로 측정합니다:

import time

INTERVAL_MIN = 30   # ← 측정 간격 (분)

while True:
    # 속도 측정 및 저장 코드 실행 (위 완성 코드 전체)
    run_speed_test()   # 함수로 감싸서 호출
    print(f"  ⏱ {INTERVAL_MIN}분 후 다시 측정합니다.\n")
    time.sleep(INTERVAL_MIN * 60)
💡 이전 게시글과 결합하면: 텔레그램 자동 발송 편과 결합하면 속도가 기준 이하로 떨어졌을 때 즉시 알림을 받을 수 있고, 차트 자동 저장 편과 결합하면 누적된 속도 이력을 시간대별 그래프로 시각화할 수 있습니다.

핵심 요약

  • 준비물: Python + speedtest-cli + pandas + openpyxl 설치 (pip install speedtest-cli pandas openpyxl)
  • 설정: OUTPUT_PATH(저장 경로), ALERT_DOWNLOAD·ALERT_PING(경고 기준값) 수정
  • 실행: 터미널에서 python speed_test.py 입력 (측정 소요 시간 30초~1분)
  • 결과: 다운로드·업로드·핑 속도가 측정일시와 함께 엑셀에 누적 저장, 기준 미달 시 경고 표시

이 코드를 응용하면 여러 지점의 네트워크 속도를 동시에 수집하거나, 특정 웹사이트의 응답 속도를 모니터링하는 것도 가능합니다.

이 블로그의 인기 게시물

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁