반응형

저번에는 크롤링으로 하는 방법을 알아보았는데요. 구글은 API를 제공해줘서

좀더 편한방법으로도 크롤링할 수 있습니다.

2021.12.28 - [Tip & Tech/Python] - 파이썬 유튜브 제목, 조회수 크롤링하기

 

파이썬 유튜브 제목, 조회수 크롤링하기

안녕하세요. 오랫만에 파이썬 포스팅을 하게 되었네요. 오늘은 유튜브 페이지의 제목과 조회수를 크롤링 해보겠습니다. 유튜브 페이지 크롤링 저번에 포스팅과 같이 크롤링은 처음 구조 확인부

dorudoru.tistory.com

유튜브 API

API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로,

애플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 약자입니다.

즉 API를 사용하면 커뮤니케이션 시간을 단축하여 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있습니다.

새로운 툴과 제품을 설계하거나 기존 툴과 제품을 관리하는 경우 API는 유연성을 제공하고

설계, 관리, 사용 방법을 간소화하며 혁신의 기회를 제공합니다.

구글은 다양한 API를 지원하고 있고, 이중 유튜브 API도 지원합니다.

유튜브 API 링크

 

시작하기  |  YouTube Data API  |  Google Developers

시작하기 소개 이 문서는 YouTube와 상호작용할 수 있는 애플리케이션을 개발하려는 개발자를 위해 작성되었습니다. 여기에서는 YouTube 및 API의 기본 개념에 대해 설명합니다. 또한 API가 지원하는

developers.google.com

위 링크에서 유튜브 API를 만들면 되는데요.

가이드를 보고 따라하셔도 되고 아래 링크로 직접 접속하셔도 됩니다.

 

Google Cloud Platform

There is a temporary block on your account. This happens when Google detects requests from your network that may have been sent by malicious software, a browser plug-in, or script that sends automated requests. Retry in a few minutes.

console.cloud.google.com

youtube api

하단에 위치한 사용자 인증 정보를 입력하시면 API키를 얻을 수 있습니다.

받은 API키를 잘 복사해 놓으시면 됩니다.

파이썬에서 Youtube API 연동

파이썬에서 간편하게 youtube API를 연동할 수 있는데요.

구글 가이드 링크

 

Python 코드 예  |  YouTube Data API  |  Google Developers

Python 코드 예 Python용 Google API 클라이언트 라이브러리를 사용하는 다음 코드 샘플은 YouTube Data API에 사용할 수 있습니다. 이 코드 샘플들은 GitHub의 YouTube API 코드 샘플 리포지토리의 python 폴더에

developers.google.com

먼저 관련 라이브러리를 먼저 설치하셔야 합니다.

파이썬은 2.7이상이거나 3.5버전 이상이어야 합니다.

기본적으로 2개의 패키지가 필요하고, 추가적으로 몇개 더 필요할 수도 있습니다.

pip install --upgrade google-api-python-client
pip install --upgrade google-auth-oauthlib google-auth-httplib2
pip install oauth2client

그리고 유튜브 API에는 할당량이 존재합니다.

읽기작업은 1,000,000개 정도입니다.

인터넷에 있는 소스를 참고하여 만들면 아래처럼 만들고 동작을 확인했습니다.

에러가 나는 경우가 있어서 예외처리를 잘해줘야 하더라구요.

import re
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.tools import argparser
import pandas as pd
import datetime
import time

DEVELOPER_KEY = 'api' #유튜브 API 키 값
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY)

views=[]
likes=[]
title=[]

for u in range(len(df3)):
    request = youtube.videos().list(
        part="snippet,contentDetails,statistics",
        id=df3['idn'].iloc[u]
    )
    try:
        response = request.execute()
        if response['items']==[]:
            title.append('-')
            views.append('-')
            likes.append('-')
            
        else
            title.append(response['items'][0]['snippet']['title'])
            views.append(response['items'][0]['statistics']['viewCount'])
            likes.append(response['items'][0]['statistics']['likeCount'])
    except:
        title.append('에러')
        views.append('없음')
        likes.append('삭제')
        
df=pd.DataFrame([title,views,likes]).T

그럼 즐거운 하루되세요

반응형

복사했습니다!